Vorgegebene Eingabe:
hello: world foo bar baz
bar:
baz: bin boop bop fiz bang beep
bap: bim bam bop
boatkeeper: poughkeepsie
Ich würde es gerne in die meisten Wörter oben sortieren, am Ende zumindest so:
baz: bin boop bop fiz bang beep
hello: world foo bar baz
bap: bim bam bop
boatkeeper: poughkeepsie
bar:
Wie würde ich das mit sort
einem anderen Tool machen?
text-processing
sort
Caleb Xu
quelle
quelle
bin: bop boop
vorherboatkeeper: poughkeepsie
. Wenn zwei Zeilen die gleiche Anzahl von Wörtern enthalten, wäre es mir lieber, wenn die Verknüpfungen alphabetisch sortiert wären, aber das ist keine Voraussetzung.Antworten:
Sie könnten etwas tun wie:
Wir verwenden,
awk
um die Anzahl der Felder jeder Zeile voranzustellen. Wir geben dannsort
diese Nummer ein und entfernen sie mitcut
.quelle
In neueren GNU-
awk
Versionen kann manPROCINFO
Array verwenden, um viele interne Parameter zu definieren, einschließlich der Reihenfolge, in der Array-Elemente gedruckt werden (gesteuert durch Element"sorted_in"
). Somit können wir mit dem Wert vonNF" "NR
, welche Elemente den Wert von haben , ein Array erstellen und indizieren$0
und es in der gewünschten Ausgabe ausgeben, in Ihrem Fall wäre das"@ind_num_desc"
:quelle
NF" "$0" "NR
, hätten Sie nurNR
einen Fallback- / Duplikatbehandlungsmechanismus.cmp_func()
- Gnu awk erlaubt das.Perl Einzeiler:
Wenn Sie Verbindungen in alphabetischer Reihenfolge trennen möchten:
quelle
Durch Python.
oder
quelle