Gibt es eine Möglichkeit, Headerzeilen in einer UNIX-Sortierung zu ignorieren?
Habe ich eine Feste Breite-Feld-Datei, die ich versuche zu Sortieren mit UNIX (Cygwin, in meinem Fall) sort utility.
Das problem ist es ist ein zwei-line-header am Anfang der Datei, die sortiert wird, um das Ende der Datei (wie jede Kopfzeile beginnt mit einem Doppelpunkt).
Gibt es eine Möglichkeit zu sagen, Sortieren, entweder mit "pass-die ersten zwei Linien quer über den unsortierten", oder geben Sie eine Bestellung, welche Arten der Doppelpunkt-Linien nach oben - die restlichen Zeilen beginnen immer mit einem 6-stelligen numerischen (was ist eigentlich der Schlüssel, ich bin das Sortieren nach), ob das hilft.
Beispiel:
:0:12345
:1:6:2:3:8:4:2
010005TSTDOG_FOOD01
500123TSTMY_RADAR00
222334NOTALINEOUT01
477821USASHUTTLES21
325611LVEANOTHERS00
Sortieren sollte:
:0:12345
:1:6:2:3:8:4:2
010005TSTDOG_FOOD01
222334NOTALINEOUT01
325611LVEANOTHERS00
477821USASHUTTLES21
500123TSTMY_RADAR00
InformationsquelleAutor der Frage Rob Gilliam | 2013-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Klammern erstellen Sie eine subshell, die Nachbereitung, die Standardausgabe, so dass Sie können leiten oder leiten es, wenn, wie es kommen musste, aus einem einzigen Befehl.
InformationsquelleAutor der Antwort BobS
Wenn es Ihnen nichts ausmacht mit
awk
können Sie die Vorteileawk
's built-in-Rohr-FähigkeitenzB.
Dieser druckt die ersten beiden Zeilen wörtlich und Rohre der rest durch
sort
.Beachten Sie, dass dies die ganz besonderen Vorteil, dass Sie in der Lage, selektiv Teile Sortieren
von a leiten Eingang. alle anderen Methoden vorgeschlagen, wird nur eine Art Klartext-Dateien, die gelesen werden können, mehrere Male. Dies funktioniert auf alles.
InformationsquelleAutor der Antwort Dave
Hier ist eine version, die funktioniert, auf die weitergeleiteten Daten:
Wenn Ihr header hat mehrere Zeilen:
Diese Lösung ist aus hier
InformationsquelleAutor der Antwort freeseek
Können Sie
tail -n +3 <file> | sort ...
(tail-Ausgabe der Inhalt der Datei wird aus der 3. Zeile).InformationsquelleAutor der Antwort Anton Kovalenko
Beispiel:
InformationsquelleAutor der Antwort Vijay
Dauert es nur 2 Zeilen code...
Für numerische Daten, -n erforderlich ist. Für alpha-Art, die -n ist nicht erforderlich.
Beispiel-Datei:
$ cat test.txt
Ergebnis:
$ cat ein.tmp
InformationsquelleAutor der Antwort Ian Sherbin
Mit Python:
InformationsquelleAutor der Antwort crusaderky
Hier ist ein bash shell-Funktion, abgeleitet aus den anderen Antworten. Es verarbeitet sowohl Dateien und pipes. Das erste argument ist der name der Datei oder '-' für stdin. Verbleibenden Argumente zu Sortieren. Ein paar Beispiele:
Die shell-Funktion:
InformationsquelleAutor der Antwort JonDeg
Dies ist das gleiche wie Ian Sherbin Antwort, aber meine Umsetzung ist :-
InformationsquelleAutor der Antwort Bik
So, hier ist eine bash-Funktion, wo Argumente sind genau wie Art. Unterstützung von Dateien und pipes.
Wie es funktioniert. Diese Zeile prüft, ob es mindestens ein argument und wenn das Letzte argument eine Datei ist.
Dieser speichert die Datei auf separaten argument. Da wir dabei sind, löschen Sie die Letzte argument.
Hier entfernen wir das Letzte argument. Da wir nicht möchten, übergeben Sie es als eine Art argument.
Schließlich machen wir das awk-Teil, die übergabe der Argumente (minus das Letzte argument wenn es das war-Datei) zu Sortieren in awk. Dieser wurde gerade vorgeschlagen von Dave, und modifiziert, um Argumente Sortieren. Wir verlassen uns auf die Tatsache, dass
$file
wird leer sein, wenn wir Rohrleitungen, damit ignoriert.Beispiel für die Verwendung mit einem Komma getrennte Datei.
InformationsquelleAutor der Antwort flu
Dies zu tun, was Sie wollen.
InformationsquelleAutor der Antwort Sathish G