Linux Deutsch

Wörter, Zeilen und Bytes mit wc zählen

Lerne, wie du mit wc unter Linux Zeilen, Wörter und Bytes einzelner oder mehrerer Dateien sowie Pipeline-Ausgaben zählst.

Der Linux-Befehl wc zählt Inhalte. Sein Name ist die Abkürzung für word count, also „Wortzählung“. Obwohl der Name auf Wörter hinweist, kann wc außerdem Zeilen und Bytes zählen.

Der Befehl wird häufig mit Textdateien verwendet, funktioniert aber grundsätzlich mit Daten aus einer Datei oder aus der Standardeingabe. Für den Einstieg sind Kenntnisse über das aktuelle Verzeichnis, Dateinamen und einfache Befehlsoptionen hilfreich. Grundlagen dazu findest du bei grundlegenden Linux-Befehlen und beim Arbeiten mit Dateien.

Was zählt wc?

Ohne zusätzliche Optionen gibt wc drei Kennzahlen aus: die Anzahl der Zeilen, die Anzahl der Wörter und die Anzahl der Bytes. Bei einer Datei folgt außerdem deren Dateiname.

Eine Zeile wird bei wc im Normalfall durch einen Zeilenumbruch beendet. Die Option -l zählt deshalb technisch Zeilenumbrüche. Ein Wort ist eine durch Leerraum abgegrenzte Folge von Zeichen. Leerzeichen, Tabulatoren und Zeilenumbrüche dienen dabei als Trennzeichen. Ein Byte ist eine Einheit für die Datenmenge; wc -c zählt die Bytes des gelesenen Inhalts.

Grundsyntax

wc [OPTION]... DATEI...

Mindestens ein Dateiname kann angegeben werden. Mehrere Dateinamen sind ebenfalls erlaubt. Die Zahlen in der Ausgabe gehören jeweils zu dem Dateinamen, der am Ende der Ergebniszeile steht.

Die Standardausgabe verstehen

Die Standardausgabe hat diese Reihenfolge:

PositionBedeutung

1 — Anzahl der Zeilen beziehungsweise Zeilenumbrüche

2 — Anzahl der durch Leerraum getrennten Wörter

3 — Anzahl der Bytes im gelesenen Dateiinhalts

4 — Dateiname

Die letzte Spalte ist nur vorhanden, wenn wc eine Datei über ihren Namen verarbeitet. Bei Eingaben aus einer Pipeline muss kein Dateiname ausgegeben werden.

Eine Datei auswerten

Mit einem Dateinamen rufst du wc so auf:

wc bobs_file.txt

Angenommen, die Datei enthält genau diese zwei Zeilen:

Hallo Bob
Linux zählt

Die Datei enthält zwei Zeilenumbrüche, vier Wörter und 23 Bytes. Bei einer UTF-8-Kodierung benötigt das ä in „zählt“ zwei Bytes. Eine mögliche Ausgabe lautet daher:

2 4 23 bobs_file.txt

Die erste Zahl ist die Zeilenanzahl, die zweite die Wortanzahl, die dritte die Byteanzahl. Die vierte Angabe ordnet diese Werte der Datei bobs_file.txt zu.

Mehrere Dateien auswerten

Mehrere Dateien werden hintereinander angegeben:

wc bobs_file.txt alice_file.txt

wc gibt für jede Datei eine eigene Ergebniszeile aus. Danach folgt eine zusätzliche Zeile mit der Bezeichnung total. Sie enthält die Summe der Werte aller verarbeiteten Dateien.

2  4 23 bobs_file.txt
3  6 41 alice_file.txt
5 10 64 total

Die Abstände zwischen den Spalten können je nach Ausgabe variieren. Entscheidend ist die Reihenfolge der Werte, nicht die genaue Anzahl der Leerzeichen.

Einzelne Kennzahlen mit Optionen ausgeben

Optionen sind Schalter, die bestimmen, welche Kennzahl ausgegeben wird. Die wichtigsten Optionen sind:

OptionAusgabeBeispiel

-l — Nur Zeilen beziehungsweise Zeilenumbrüche — wc -l bobs_file.txt

-w — Nur Wörter — wc -w bobs_file.txt

-c — Nur Bytes — wc -c bobs_file.txt

Nur Zeilen zählen

wc -l bobs_file.txt

Die Ausgabe enthält nur die Anzahl der Zeilen und den Dateinamen, beispielsweise 2 bobs_file.txt.

Nur Wörter zählen

wc -w bobs_file.txt

Dieser Aufruf gibt die Anzahl der durch Leerraum getrennten Wörter aus, beispielsweise 4 bobs_file.txt.

Nur Bytes zählen

wc -c bobs_file.txt

Damit ermittelst du die Byteanzahl des Dateiinhalts, beispielsweise 23 bobs_file.txt. Bei Zeichen außerhalb des ASCII-Zeichensatzes kann die Byteanzahl größer sein als die Anzahl der sichtbaren Zeichen.

Alle drei Optionen können auch mit mehreren Dateinamen kombiniert werden:

wc -l bobs_file.txt alice_file.txt

Dann erscheint für jede Datei eine Zeilenzahl und zusätzlich eine total-Summe.

Eingabe über die Standardeingabe

Wird kein Dateiname angegeben, liest wc aus der Standardeingabe. Das kann eine Eingabe von der Tastatur oder die Ausgabe eines anderen Befehls sein. Eine Pipeline verbindet Befehle mit dem Zeichen | und leitet die Ausgabe des ersten Befehls als Eingabe an den zweiten weiter.

printf 'eins zwei drei\n' | wc -w

printf erzeugt den Text, danach zählt wc -w die Wörter. Die Ausgabe ist:

3

Da keine Datei als Argument angegeben wurde, muss in dieser Ausgabe kein Dateiname stehen. Dieses Muster ist nützlich, wenn du nicht eine gespeicherte Datei, sondern die Ausgabe eines Befehls zählen möchtest.

Typische Probleme und ihre Lösungen

Die Zeilenzahl wirkt um eins zu niedrig

wc -l zählt Zeilenumbrüche, nicht einfach die sichtbaren Textzeilen. Endet die letzte sichtbare Zeile nicht mit einem Zeilenumbruch, wird sie von wc -l nicht als zusätzlicher Zeilenumbruch gezählt. Speichere die Datei bei Bedarf mit einem abschließenden Zeilenumbruch und prüfe anschließend erneut.

Eine Datei kann nicht geöffnet werden

Bei einer Fehlermeldung solltest du den Dateinamen und den Pfad prüfen. Stelle mit ls fest, ob die Datei im aktuellen Verzeichnis vorhanden ist. Bei einem anderen Verzeichnis musst du einen relativen oder absoluten Pfad angeben. Zusätzlich können fehlende Leserechte die Ursache sein. Grundlagen zu diesem Thema beschreibt der Artikel über Zugriffsrechte.

ls
ls -l bobs_file.txt

Die Wortzahl entspricht nicht der erwarteten sprachlichen Wortanzahl

wc versteht keine Grammatik und bewertet keine sprachliche Bedeutung. Es trennt anhand von Leerraum. Satzzeichen bleiben daher am jeweiligen Zeichenbestandteil, und besondere Formatierungen können zu einer anderen Zahl führen als eine manuelle Zählung. Bei speziellen Daten musst du den Text vor dem Zählen gegebenenfalls mit weiteren Shell-Werkzeugen aufbereiten.

Die Zeile total erscheint zusätzlich

Das ist bei mehreren Eingabedateien normal. wc fasst die Werte aller zuvor aufgeführten Dateien in dieser zusätzlichen Gesamtzeile zusammen.

Wichtige Merksätze

  • wc DATEI zeigt standardmäßig Zeilen, Wörter, Bytes und den Dateinamen.
  • -l steht für Zeilen, -w für Wörter und -c für Bytes.
  • Die Zeilenzählung basiert auf Zeilenumbrüchen.
  • Die Wortzählung ist eine technische, leerraum-basierte Zählung.
  • Bei mehreren Dateien gibt es zusätzlich eine total-Zeile.
  • Ohne Dateinamen liest wc aus der Standardeingabe und eignet sich besonders für Pipelines.