probl=c3=a8me de tri avec sort

2 réponses
Avatar
Samy Mezani
Bonjour,

Je m'arrache les cheveux avec sort.

Soit 2 fichiers texte, avec les contenus suivants :

$ cat fichier1
"a z"
"a b"
"a"
"ac"

$ cat fichier2
"a z"@t
"a b"@t
"a"@t
"ac"@t

Je trie ces fichiers avec sort :

$ cat fichier1 | sort
"a"
"a b"
"ac"
"a z"

$ cat fichier2 | sort -t "@" -k1
"a b"@t
"ac"@t
"a"@t
"a z"@t

Pourquoi le tri est différent dans le 2ème cas ??

Ma santé mentale vous remercie par avance ! ;-)

Samy

2 réponses

Avatar
Samy Mezani
Le 24/08/2017 à 16:49, a écrit :
Parce que le caractère de fin de chaîne est avant tout autre caractère, arobase compris.

Merci Nicolas,
Pourrais-tu détailler, je ne comprend pas trop ta phrase.
Merci
Samy
Avatar
Marc Chantreux
salut Samy,
je serais heureux de lire si qq1 trouve la solution. toutefois je dois
avouer que pour ma part, j'ai contourné le pb lorsque sort m'a joué ce
genre de tours:
perl -F@ -lane '
push @lines, [@F];
END { map { print join q(@), @$_ }
sort { $$a[0] cmp $$b[0] }
@lines }' <<.
"a z"@t
"a b"@t
"a"@t
"ac"@t
.
me donne bien
"a b"@t
"a z"@t
"a"@t
"ac"@t
cordialement,
marc