wc-commando: regels en woorden tellen en wc -l met pipes gebruiken

TestomgevingRHEL-familieAlmaLinux 9.8root-accountGecontroleerd op 2026-10-29

Het wc-commando is een Linux-commando dat het aantal regels, woorden en bytes in een bestand telt en toont. Als je met wc -l de regels telt van een voorbeeldbestand met het toegangslog van een webserver, krijg je 10, en als je met grep alleen de 404-antwoorden filtert en aan wc -l doorgeeft, zie je het aantal mislukte verzoeken, 3, als één getal.

De logs, bestandsinhoud en de werkmap /root/work hieronder zijn voorbeeldwaarden. Het log is een bestand van tien regels met IP-adressen die voor documentatie zijn gereserveerd, en ook de andere bestanden zijn allemaal voor tests gemaakt.

1️⃣ Basisgebruik van het wc-commando en de uitvoer lezen

De basisvorm van het commando is wc, dan opties, dan bestanden. Geef je alleen een bestand zonder opties, dan toont wc achter elkaar het aantal regels, woorden en bytes en zet het de bestandsnaam aan het eind.

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

In het resultaat voor het toegangslog is 10 het aantal regels, 100 het aantal woorden en 766 het aantal bytes.

Wil je maar één getal zien, voeg dan een van de opties -l, -w of -c toe.

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

Geef je een bestand op dat niet bestaat, dan verschijnt er een foutmelding en is de exitcode 1.

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

2️⃣ Regels tellen met wc -l en pipes

Als bij het tellen van regels ook de bestandsnaam wordt getoond, moet je die naam nog een keer afknippen wanneer je het getal in een scriptvariabele opslaat. Geef je het bestand door via een omleiding (<) of een pipe, dan kent wc de bestandsnaam niet en toont het alleen het getal.

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

Zet je grep vóór de pipe, dan tel je alleen de regels die aan een voorwaarde voldoen. Er is gezocht met de spaties voor en na de antwoordcode 404, en drie regels bevatten 404.

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

Om te tellen hoeveel IP's verbinding maakten, knip je alleen het eerste veld uit, verwijder je dubbele regels met sort -u en tel je daarna. In het log van tien regels stonden vier verschillende IP's.

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 telt het aantal regeleindetekens. Daarom toont wc -l bij een bestand zonder regeleinde aan het eind van de laatste regel 1, ook al laat cat twee regels zien.

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

Komt het aantal regels er één te laag uit, controleer dan eerst of de laatste regel eindigt met een regeleinde.

3️⃣ wc-opties en het aantal tekens met -c en -m

In UTF-8 nemen Engelse letters en cijfers 1 byte per teken in, terwijl Koreaanse tekens (Hangul) en ☕ elk 3 bytes innemen. In een bestand met alleen Engelse tekst zijn het aantal bytes van -c en het aantal tekens van -m daarom gelijk, maar zodra er Koreaans in staat, verschillen de twee getallen. De vergelijking gebruikt een bestand met twee regels Koreaanse menunamen en één regel in het Engels.

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

-c gaf 38 en -m gaf 18, een verschil van 20. Dat zijn de 2 extra bytes die elk van de negen Koreaanse tekens en ☕ inneemt, dus bij een bestand met Koreaans tel je met -m om op het werkelijke aantal tekens uit te komen. De meting is gedaan in de locale C.UTF-8, en volgens de handleiding telt -m in de tekeneenheden van de locale.

-L toont de weergavebreedte van de langste regel. In het toegangslog was de langste regel 82 kolommen breed; in het menubestand neemt elk Koreaans teken en ☕ twee kolommen in, waardoor een regel van 7 tekens 12 gaf.

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

Latijnse letters met een accent nemen in UTF-8 2 bytes per teken in. Dat is apart gemeten met een bestand dat alleen de regel café bevat.

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

-c gaf 6 en -m gaf 5, omdat de ene é een byte extra innam. Engelse letters en cijfers nemen 1 byte in, letters met een accent zoals é 2 bytes, en Koreaanse tekens en ☕ 3 bytes, dus het aantal bytes verschilt ook bij hetzelfde aantal tekens.

De tabel zet het passende commando voor elke taak naast het getal dat in dit artikel is geteld.

TaakCommandoGemeten in dit artikel
Alleen het aantal regels als getal krijgenwc -l < access.log10Alleen het getal, zonder bestandsnaam
Regels tellen die aan een voorwaarde voldoengrep ‘ 404 ‘ access.log | wc -l3Regels met een 404-antwoord
Verschillende waarden tellencut -d ‘ ‘ -f 1 access.log | sort -u | wc -l4Aantal verschillende IP's
Bestandsgrootte controlerenwc -c access.log766Aantal bytes
Aantal tekens in een bestand met Koreaanswc -m menu.txt1838 als hetzelfde bestand met -c wordt geteld
Weergavebreedte van de langste regelwc -L access.log8212 voor het menubestand, dat elk Koreaans teken als twee kolommen telt
Totaal aantal regels van meerdere bestandenwc -l *.log13Totaal op de total-regel

4️⃣ Totaal van meerdere bestanden met Linux wc

Geef je meerdere bestanden op, dan toont wc per bestand één regel en zet het op de laatste regel het totaal als total. Tel je het toegangslog en het foutlog samen, dan is de 13 op de total-regel de som van de regels van beide bestanden.

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

Om logs met dezelfde extensie in één keer te tellen, gebruik je een jokerteken. De shell zet *.log om in bestandsnamen voordat ze worden doorgegeven, dus het resultaat is hetzelfde als wanneer je elke bestandsnaam afzonderlijk opgeeft.

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

Ook bestanden met verschillende extensies tel je in één keer als je hun namen achter elkaar opgeeft. De twee logs en het menubestand samen gaven total 16.

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

🔲 Simulator voor het wc-commando

In de simulator hieronder kun je zelf wc typen op de voorbeeldbestanden uit dit artikel. Met de chips probeer je -l, -m en tellen via een pipe uit, en als je een regel aan access.log toevoegt en opnieuw telt, zie je het hogere getal.

Simulator voor het wc-commandowc / root-account
[root@server work]#
Met de toetsen ↑↓ haal je eerder ingetypte commando's terug.

🔢 FAQ & aanbevolen content

Ja, als je in één bestand de regels telt die aan een voorwaarde voldoen. In hetzelfde toegangslog gaf grep -c met dezelfde voorwaarde ook 3. grep -c doet het met één commando zonder pipe, en wc -l gebruik je om naast grep ook de uitvoer van andere commando's zoals sort of cut te tellen.

Elk blok dat door spaties, tabs of regeleinden wordt gescheiden, telt als één woord. Het resultaat van [echo ‘log_level=warn timeout = 30’ | wc -w] is 4. log_level=warn zonder spaties telt als één woord, en de = met spaties aan beide kanten telt als een apart woord.

Kies met find alleen de bestanden en geef ze door aan wc -l. In de voorbeeldmap toonde [find /root/work -type f | wc -l] 5. [ls | wc -l] gaf in dezelfde map ook 5, maar ls toont ook de namen van submappen als regels en telt de bestanden daarin niet.

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 0   +   9   =