Comment puis-je trier le fichier par la deuxième colonne du terminal. Le contenu du fichier est :
Nome Note
------------
Mehdi 0
Sunday 20
Others 10
Shnou 5
Utilisation de sort -t' ' -nk2
ne me donne pas le bon résultat. Aussi, comment puis-je m'assurer que le contenu du fichier reste trié ?
Réponse acceptée :
Je pense que ce que vous recherchez ressemble à ceci :
Méthode n° 1 :utiliser pile et face
$ (head -n 2 sample.txt; tail -n +3 sample.txt | sort -t' ' -nk2) > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
Cela prend la première ligne du fichier texte, puis termine tout après les 2 premières lignes qui sont ensuite triées.
Méthode n° 2 :utiliser simplement la tête
$ (head -n 2; sort -t' ' -nk2) < sample.txt > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
Prend le fichier texte en entrée, affiche uniquement la première ligne, trie le reste.
Ce n'est généralement pas une bonne idée de modifier les fichiers sur place. C'est possible, mais mieux vaut utiliser une lime intermédiaire.
Méthode n° 3 :Faire n° 2 sans fichier intermédiaire
En volant l'idée de @StephaneChazelas, vous pouvez faire ce qui suit en utilisant la notation "1<>" pour ouvrir un fichier en lecture et en écriture, et les améliorations qu'il a suggérées avec le sort
commande.
$ (head -n 2; sort -nk2) < sample.txt 1<> sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20