News Ticker

Unix-Tools 4: wc & comm

Heute sollen zwei sehr kleine aber umso praktischere Tools vorgestellt werden. Das erste hört auf den kryptischen Namen wc (word count, dt. Wortzählung) und gibt die Länge einer Datei in verschiedenen Einheiten auf dem Bildschirm aus. Das zweite Tool heißt comm. Es vergleicht zwei Dateien auf Zeilenbasis und gibt die Unterschiede bzw. Gemeinsamkeiten zurück.

wc wird einfach über wc datei1 datei2 … aufgerufen. Per Standard werden somit für jede Datei drei Spalten ausgegeben. Die erste gibt die Anzahl der Wörter zurück, die zweite die Anzahl der Zeilen und die letzte Spalte zeigt an wie viele Zeichen die entsprechende Datei besitzt. Hier eine Beispielausgabe:


titan% wc test.html
96  455 3273 test.html

Man kann aber auch nur eine einzige Spalte anzeigen lassen. Hierfür gibt es die Schalter –w (words, dt. Wörter), –l (lines, dt. Linien) und –c (characters, dt. Zeichen).


titan% wc -l test.html
96 test.html

Einen weiteren halbwegs interessanten Schalter besitzt wc noch: –L gibt die Zeichenanzahl der längsten Zeile zurück. Wer also z.B. eine e-Mail, einen Report oder eine Quelldatei auf die für Mails und Newsgroups typischen Linienlängen von 72 oder 80 Zeichen überprüfen möchte (sofern man keine automatischen Zeilenumbrüche aktiviert hat), kann dies wie folgt tun:


titan% wc -L mail.txt
86 mail.txt

comm ist ein noch simpleres Tool. Es wird immer mit zwei Dateinamen als Agrumente aufgerufen:

titan% comm datei1 datei2
                 Projekt 1
         Projekt 3
Projekt 4
                 Projekt 6
Projekt 6

Anhand dieser Ausgabe lässt sich der Inhalt der Dateien rekonstruieren. datei1 enthält die Zeilen “Projekt 4” und “Projekt 6”, datei2 aber nicht. datei2 enthält die Zeile “Projekt 3” die datei1 nicht enthält. Beide Dateien enthalten jeweils die Zeilen “Projekt 1” und “Projekt 6”. Anzumerken ist, dass somit datei1 zweimal die Zeile “Projekt 6” enthält, denn die ersten zwei Spalten geben an welche Zeilen nur in der aktuellen Datei vorhanden sind. Mit den Schaltern –1–2 oder –3 lassen sich die entsprechenden Spalten ausblenden, wobei die Argumente beliebig kombiniert werden können: comm -12 datei1 datei2 gibt somit aus, welche Zeilen in beiden Dateien vorkommen.

Das war’s auch schon für heute. Viel Spaß beim Ausprobieren!

PS: Ein viel mächtigeres, aber auch komplexes Tool zum Vergleichen von Dateien mit Linux ist diff. Es arbeitet zeichenbasiert und wird gern von Entwicklern benutzt. Ein man diff gibt wie immer mehr Informationen darüber aus.