Wie kann ich die Datei vom Terminal aus nach der zweiten Spalte sortieren? Der Inhalt der Datei ist:
Nome Note
------------
Mehdi 0
Sunday 20
Others 10
Shnou 5
Mit sort -t' ' -nk2
liefert mir nicht das richtige Ergebnis. Wie kann ich außerdem sicherstellen, dass der Inhalt der Datei sortiert bleibt?
Akzeptierte Antwort:
Ich denke, was Sie suchen, ist so etwas:
Methode Nr. 1:Head &Tail verwenden
$ (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
Dies nimmt die erste Zeile der Textdatei und fügt dann alles nach den ersten 2 Zeilen hinzu, was dann sortiert wird.
Methode Nr. 2:Nur den Kopf verwenden
$ (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
Nimmt die Textdatei als Eingabe, zeigt nur die erste Zeile an, sortiert den Rest.
Es ist normalerweise keine gute Idee, Dateien direkt zu bearbeiten. Es ist möglich, aber besser, eine Zwischendatei zu verwenden.
Methode Nr. 3:Vorgehensweise Nr. 2 ohne Zwischendatei
Wenn Sie die Idee von @StephaneChazelas stehlen, könnten Sie Folgendes tun, indem Sie die Notation „1<>“ verwenden, um eine Datei zum Lesen und Schreiben zu öffnen, und die Verbesserungen, die er mit dem sort
vorgeschlagen hat Befehl.
$ (head -n 2; sort -nk2) < sample.txt 1<> sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20