Ich habe diesen Code in einem Shell-Skript:
sort input | uniq -c | sort -nr > output
Die Eingabedatei hatte keine vorhergehenden Leerzeichen, die Ausgabe jedoch. Wie behebe ich das? Dies ist in Bash
command-line
uniq
Jeremy Wik
quelle
quelle
uniq -c
fügt führende Leerzeichen hinzu. Z.BSie können am Ende der Pipeline einen Befehl hinzufügen, um ihn zu entfernen. Z.B
quelle
FWIW können Sie für mehr Flexibilität ein anderes Sortierwerkzeug verwenden. Python ist ein solches Werkzeug.
Quelle
Theoretisch wäre dies sogar schneller als das
sort
Tool für große Eingaben, da das obige Programm eine Hash-Tabelle verwendet, um doppelte Zeilen anstelle einer sortierten Liste zu identifizieren. (Leider werden Zeilen mit identischer Anzahl in einer beliebigen statt in einer natürlichen Reihenfolge angeordnet. Dies kann geändert werden und ist immer noch schneller als zweisort
Aufrufe.)Ausgabeformat
Wenn Sie mehr Flexibilität auf dem Ausgabeformat möchten , können Sie in der Suche
print()
undformat()
integrierte Funktionen.Wenn Sie beispielsweise die Zählzahl in Oktalform mit bis zu 7 führenden Nullen und gefolgt von einem Tabulator anstelle eines Leerzeichens mit einem NUL-Zeilenabschluss drucken möchten, ersetzen Sie die letzte Zeile durch:
Verwendung
Speichern Sie das Skript beispielsweise in einer Datei
sort_count.py
und rufen Sie es mit Python auf:quelle
Übersetzen Sie führende Leerzeichen mit tr -s in einzelne Leerzeichen und drucken Sie dann die Ausgabe des 2. Zeichens mit cut -c aus.
quelle