Wie kann ich die Ausgabe von awk unter Berücksichtigung eines bestimmten Zeichens sortieren?

591
zyy

Ich versuche, die chinesische Schrift, die ich in meinem Laptop habe, auszudrucken und die Ausgabe nach ihrem Namen zu sortieren, auf den verwiesen werden könnte LaTeX. Dies kann mit dem folgenden Befehl ausgeführt werden:

fc-list :lang=zh-cn | awk -F": " '{$1=""; print}' | sort 

Es findet die Schriftartenliste, dann nach dem ersten Vorkommen :und ein einzelnes Leerzeichen, in dem die Namen der Schrift angezeigt werden. Dann sortieren wir es natürlich.

Das Problem hier ist jedoch, dass es Fonts gibt, die wie .PingFang SC, die ganz nach vorne sortiert sind und nicht mit dem Rest übereinstimmen. Gibt es eine Möglichkeit, die Periode zu ignorieren?

Es ist möglicherweise keine gute Wahl, den Punkt zu entfernen, wodurch der tatsächliche Name der Schriftart geändert wird und der Verweis daher schwer wird.

1

1 Antwort auf die Frage

1
Scott

Versuchen Sie es mit sort -d ("Wörterbuchreihenfolge", die nicht-alphanumerische Zeichen zu ignorieren scheint):

$ printf "Orange\n.PingFang\nRed\n" | sort .PingFang Orange Red  $ printf "Orange\n.PingFang\nRed\n" | sort -d Orange .PingFang Red 
Das funktioniert! Vielen Dank! Haben Sie Ideen für die leere Ausgabe, die durch das Hinzufügen von zusätzlichem Platz entstanden ist? zyy vor 5 Jahren 0
Es tut mir leid, aber ich verstehe nicht, was Sie sagen. Können Sie Ihre Frage bearbeiten, um einige Beispiele für Ihre Eingabe (dh die Ausgabe von `` fc-list``) und Ihre Ausgabe anzuzeigen? Scott vor 5 Jahren 0
Ich sehe, was das Problem ist, der zusätzliche Speicherplatz ergibt sich aus dem Befehl `$ 1 =" "`. Jetzt ist alles gut, danke! zyy vor 5 Jahren 0