wc-Befehl: Zeilen und Wörter zählen und wc -l mit Pipes nutzen

TestumgebungRHEL-FamilieAlmaLinux 9.8root-KontoGeprüft am 2026-10-29

Der Befehl wc ist ein Linux-Befehl, der die Anzahl der Zeilen, Wörter und Bytes einer Datei zählt und ausgibt. Zählst du die Zeilen einer Beispieldatei mit dem Zugriffslog eines Webservers mit wc -l, erhältst du 10, und wenn du mit grep nur die 404-Antworten herausfilterst und an wc -l weitergibst, siehst du die Zahl der fehlgeschlagenen Anfragen, 3, als einzelne Zahl.

Die Logs, Dateiinhalte und der Arbeitsordner /root/work unten sind Beispielwerte. Das Log ist eine zehnzeilige Datei mit IP-Adressen, die für Dokumentation reserviert sind, und auch die anderen Dateien wurden alle zum Testen erstellt.

1️⃣ Grundlegende Verwendung des wc-Befehls und seine Ausgabe lesen

Die Grundform des Befehls ist wc, dann Optionen, dann Dateien. Gibst du nur eine Datei ohne Optionen an, gibt wc nacheinander Zeilenzahl, Wortzahl und Bytezahl aus und hängt am Ende den Dateinamen an.

cd /root/work
wc access.log
 10 100 766 access.log

Im Ergebnis für das Zugriffslog ist 10 die Zeilenzahl, 100 die Wortzahl und 766 die Bytezahl.

Wenn du nur eine Zahl sehen willst, hängst du eine der Optionen -l, -w oder -c an.

wc -l access.log
10 access.log
wc -w access.log
100 access.log
wc -c access.log
766 access.log

Gibst du eine Datei an, die es nicht gibt, erscheint eine Fehlermeldung und der Exit-Code ist 1.

wc nosuch.txt
wc: nosuch.txt: No such file or directory
echo $?
1

2️⃣ Zeilen zählen mit wc -l und Pipes

Wenn beim Zählen der Zeilen auch der Dateiname mit ausgegeben wird, musst du den Namen noch einmal abschneiden, wenn du die Zahl in einer Skriptvariablen speicherst. Übergibst du die Datei per Umleitung (<) oder Pipe, kennt wc den Dateinamen nicht und gibt nur die Zahl aus.

wc -l < access.log
10
cat access.log | wc -l
10

Setzt du grep vor die Pipe, kannst du nur die Zeilen zählen, die eine Bedingung erfüllen. Gesucht wurde mit den Leerzeichen vor und nach dem Antwortcode 404, und drei Zeilen enthielten 404.

grep ' 404 ' access.log | wc -l
3

Um zu zählen, wie viele IPs zugegriffen haben, schneidest du nur das erste Feld aus, entfernst doppelte Zeilen mit sort -u und zählst dann. Im zehnzeiligen Log gab es vier verschiedene IPs.

cut -d ' ' -f 1 access.log | sort -u
192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25
cut -d ' ' -f 1 access.log | sort -u | wc -l
4

wc -l zählt die Zeilenumbruchzeichen. Deshalb gibt wc -l bei einer Datei ohne Zeilenumbruch am Ende der letzten Zeile 1 aus, obwohl cat zwei Zeilen zeigt.

cat no-newline.txt
first line
last line
wc -l no-newline.txt
1 no-newline.txt

Wenn die Zeilenzahl um eins zu niedrig ist, prüfe zuerst, ob die letzte Zeile mit einem Zeilenumbruch endet.

3️⃣ wc-Optionen und Zeichenzahl mit -c und -m

In UTF-8 belegen englische Buchstaben und Ziffern 1 Byte pro Zeichen, koreanische Zeichen (Hangul) und ☕ dagegen je 3 Bytes. Bei einer Datei nur mit englischem Text sind die mit -c gezählte Bytezahl und die mit -m gezählte Zeichenzahl deshalb gleich, sobald Koreanisch dazukommt, unterscheiden sich die beiden Zahlen. Verglichen wird mit einer Datei mit zwei Zeilen koreanischer Menünamen und einer Zeile auf Englisch.

cat menu.txt
아메리카노
카페 라테 ☕
tea
wc -c menu.txt
38 menu.txt
wc -m menu.txt
18 menu.txt

-c ergab 38 und -m ergab 18, also 20 Unterschied. Das sind die 2 zusätzlichen Bytes, die jedes der neun koreanischen Zeichen und ☕ belegt. Bei einer Datei mit Koreanisch zählst du deshalb mit -m, damit die Zahl zur tatsächlichen Zeichenzahl passt. Gemessen wurde in der Locale C.UTF-8, und laut Handbuch zählt -m in den Zeicheneinheiten der Locale.

-L gibt die Anzeigebreite der längsten Zeile aus. Im Zugriffslog war die längste Zeile 82 Spalten breit; in der Menüdatei belegen koreanische Zeichen und ☕ je zwei Spalten, deshalb ergab eine Zeile mit 7 Zeichen 12.

wc -L access.log
82 access.log
wc -L menu.txt
12 menu.txt

Lateinische Buchstaben mit Akzent belegen in UTF-8 2 Bytes pro Zeichen. Gemessen wurde das gesondert mit einer Datei, die nur die eine Zeile café enthält.

cat cafe.txt
café
wc -c cafe.txt
6 cafe.txt
wc -m cafe.txt
5 cafe.txt

-c ergab 6 und -m ergab 5, weil das eine é ein Byte mehr belegte. Englische Buchstaben und Ziffern belegen 1 Byte, Buchstaben mit Akzent wie é 2 Bytes, koreanische Zeichen und ☕ 3 Bytes, deshalb unterscheidet sich die Bytezahl auch bei gleicher Zeichenzahl.

Die Tabelle fasst den passenden Befehl für jede Aufgabe und die in diesem Artikel gezählte Zahl zusammen.

AufgabeBefehlGemessen in diesem Artikel
Nur die Zeilenzahl als Zahl erhaltenwc -l < access.log10Nur die Zahl, ohne Dateinamen
Zeilen zählen, die eine Bedingung erfüllengrep ‘ 404 ‘ access.log | wc -l3Zeilen mit 404-Antwort
Verschiedene Werte zählencut -d ‘ ‘ -f 1 access.log | sort -u | wc -l4Anzahl verschiedener IPs
Dateigröße prüfenwc -c access.log766Bytezahl
Zeichenzahl einer Datei mit Koreanischwc -m menu.txt1838, wenn dieselbe Datei mit -c gezählt wird
Anzeigebreite der längsten Zeilewc -L access.log8212 in der Menüdatei, die jedes koreanische Zeichen als zwei Spalten zählt
Summe der Zeilen mehrerer Dateienwc -l *.log13Summe in der total-Zeile

4️⃣ Summe mehrerer Dateien mit Linux wc

Gibst du mehrere Dateien an, gibt wc pro Datei eine Zeile aus und fügt in der letzten Zeile die Summe als total hinzu. Zählst du Zugriffslog und Fehlerlog zusammen, ist die 13 in der total-Zeile die Summe der Zeilen beider Dateien.

wc access.log error.log
 10 100 766 access.log
  3  11  76 error.log
 13 111 842 total

Um Logs mit derselben Endung auf einmal zu zählen, verwendest du ein Platzhalterzeichen. Die Shell ersetzt *.log durch die Dateinamen und übergibt sie, deshalb ist das Ergebnis dasselbe, als würdest du jeden Dateinamen einzeln angeben.

wc -l *.log
 10 access.log
  3 error.log
 13 total

Auch Dateien mit unterschiedlichen Endungen zählst du auf einmal, wenn du ihre Namen hintereinander angibst. Die beiden Logs und die Menüdatei zusammen ergaben total 16.

wc -l access.log error.log menu.txt
 10 access.log
  3 error.log
  3 menu.txt
 16 total

🔲 Simulator für den wc-Befehl

Im Simulator unten kannst du wc selbst mit den Beispieldateien aus dem Artikel eingeben. Mit den Chips probierst du -l, -m und das Zählen über eine Pipe aus, und wenn du access.log eine Zeile hinzufügst und erneut zählst, erscheint die höhere Zahl.

Simulator für den wc-Befehlwc / root-Konto
[root@server work]#
Mit den Tasten ↑↓ holst du zuvor eingegebene Befehle zurück.

🔢 FAQ & empfohlene Inhalte

Ja, wenn du in einer einzelnen Datei die Zeilen zählst, die eine Bedingung erfüllen. Im selben Zugriffslog ergab grep -c mit derselben Bedingung ebenfalls 3. grep -c erledigt das mit einem einzigen Befehl ohne Pipe, und wc -l verwendest du, um neben grep auch die Ausgabe anderer Befehle wie sort oder cut zu zählen.

Jeder Block, der durch Leerzeichen, Tabs oder Zeilenumbrüche getrennt ist, zählt als ein Wort. Das Ergebnis von [echo ‘log_level=warn timeout = 30’ | wc -w] ist 4. log_level=warn ohne Leerzeichen zählt als ein Wort, und das = mit Leerzeichen auf beiden Seiten zählt als eigenes Wort.

Wähle mit find nur die Dateien aus und gib sie an wc -l weiter. Im Beispielordner gab [find /root/work -type f | wc -l] 5 aus. [ls | wc -l] ergab im selben Ordner ebenfalls 5, aber ls gibt auch die Namen von Unterordnern als Zeilen aus und zählt die Dateien darin nicht.

ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 4   +   9   =