wc (englisch word count) zählt in Dateien oder in der Standardeingabe, wie viele Zeilen, Wörter, Zeichen und Bytes ein Text enthält. Das Tool ist in jeder Linux- und Unix-Umgebung vorinstalliert und ein Standard-Werkzeug für Shell-Skripte und Datenanalyse im Terminal.

Grundlagen

Der einfachste Aufruf liefert drei Zahlen und den Dateinamen:

$ wc brief.txt
  24  152 1024 brief.txt

Die Ausgabe bedeutet: 24 Zeilen, 152 Wörter, 1024 Bytes. Über die Bash-Befehle lässt sich wc direkt in Kommandozeilen und Skripten einsetzen.

Die wichtigsten Optionen

  • wc -l — nur die Anzahl der Zeilen ausgeben
  • wc -w — nur die Anzahl der Wörter ausgeben
  • wc -m — nur die Anzahl der Zeichen ausgeben (UTF-8-korrekt)
  • wc -c — nur die Anzahl der Bytes ausgeben
  • wc -L — die Länge der längsten Zeile ausgeben

Typische Einsatzmuster

Sehr oft arbeitet wc mit grep, sort, uniq und cut sowie head und tail in einer Pipeline zusammen:

$ grep -c "ERROR" app.log            # Anzahl der Fehlerzeilen
$ wc -l *.log                          # Zeilenzahl aller Logdateien
$ ls -1 | wc -l                        # Anzahl der Dateien im Ordner
$ cat protokoll.txt | wc -w            # Wörter eines Textes zählen

Wer die Zeilen der Ausgabe eines beliebigen Befehls zählt, nutzt die Pipe: history | wc -l zeigt zum Beispiel, wie viele Einträge die Shell-Historie besitzt.

Praktische Beispiele

$ wc -l /var/log/syslog             # Logzeilen zählen
$ wc -w artikel.txt                  # Wörter für ein Dokument
$ wc -m datei.txt                    # Zeichen in UTF-8 zählen
$ wc -L programm.py                  # längste Codezeile finden

Kombination mit xargs

Zusammen mit xargs lassen sich Ergebnisse weiterverarbeiten, etwa wenn ein Skript die Gesamtzahl der Zeilen aller Quelldateien benötigt. find liefert die Dateiliste, wc die Summe:

$ find src -name "*.py" -print0 | xargs -0 wc -l

Die Ausgabe endet mit der Gesamtsumme über alle Dateien.

Verwandte Grundlagen: Pipeline und sed-Befehle für weitere Textverarbeitung im Terminal.