Startpagina > Tekstverwerking en zoeken > grep

grep: Telt aantal overeenkomende regels

Het grep-commando is een krachtig hulpprogramma voor het zoeken naar specifieke patronen in tekstbestanden of standaardinvoer. Met name de optie `-c` (of `--count`) kunt u efficiënt het totale aantal regels tellen die overeenkomen met een patroon. Dit is nuttig in verschillende situaties, zoals loganalyse, codebeoordeling en gegevensfiltering.

Overzicht

grep staat voor Global Regular Expression Print en gebruikt reguliere expressies om tekst te doorzoeken en overeenkomende regels weer te geven. De optie `-c` retourneert alleen het aantal overeenkomende regels als een getal, in plaats van de overeenkomende regels zelf weer te geven.

Belangrijkste kenmerken

  • Geeft alleen het aantal regels weer dat overeenkomt met een specifiek patroon
  • Flexibel patroon zoeken met ondersteuning voor reguliere expressies
  • Kan worden gecombineerd met verschillende zoekcriteria zoals hoofdlettergevoeligheid en omgekeerde matching
  • Ondersteunt het zoeken in meerdere bestanden of bestanden binnen mappen

Belangrijkste opties

Dit zijn de belangrijkste opties die vaak worden gebruikt met grep -c of die van invloed zijn op de telresultaten.

Telling/Zoekcontrole

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`grep` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Dit zijn verschillende gebruiksvoorbeelden van het grep -c commando.

Aantal regels tellen dat overeenkomt met een patroon in een specifiek bestand

grep -c "error" sample.log

Telt het aantal regels in het bestand sample.log dat de tekenreeks 'error' bevat.

Aantal regels tellen dat overeenkomt met een patroon, hoofdlettergevoeligheid negerend

grep -ci "warning" sample.log

Telt het aantal regels in het bestand sample.log dat overeenkomt met 'warning' of 'Warning', ongeacht hoofdletters en kleine letters.

Aantal regels tellen dat overeenkomt met een patroon in meerdere bestanden

grep -c "keyword" *.txt

Telt het aantal regels dat 'keyword' bevat in alle .txt-bestanden in de huidige map, per bestand.

Aantal regels tellen dat recursief overeenkomt met een patroon in bestanden binnen een map

grep -rc "function" .

Telt het aantal regels dat de tekenreeks 'function' bevat in alle bestanden in de huidige map en alle submappen.

Aantal regels tellen dat niet overeenkomt met een patroon

grep -cv "success" sample.log

Telt het aantal regels in het bestand sample.log dat de tekenreeks 'success' niet bevat.

Tellen van regels na invoer via pipe

ls -l | grep -c "root"

Telt het aantal regels in de uitvoer van het commando ls -l dat 'root' bevat.

Tips & Aandachtspunten

Dit zijn tips en aandachtspunten om het grep -c commando effectiever te gebruiken.

Verschil tussen grep -c en wc -l

grep -c telt alleen de regels die overeenkomen met het patroon, terwijl `grep "pattern" file | wc -l` de uitvoer van `grep` (alle overeenkomende regels) ontvangt en het aantal regels telt. In de meeste gevallen is `grep -c` efficiënter. De laatste methode kan echter nuttig zijn als er aanvullende verwerking nodig is voor de door grep gefilterde regels.

  • grep -c: Telt alleen overeenkomende regels. Sneller en directer.
  • grep ... | wc -l: Telt alle regels die door grep worden uitgevoerd. Nuttig voor aanvullende pipeline-verwerking.

Gebruik van reguliere expressies

grep ondersteunt krachtige reguliere expressies. Naast specifieke woorden kunt u complexe patronen doorzoeken en tellen met behulp van het begin (`^`), einde (`$`), specifieke tekensets (`[abc]`) en herhalingen (`*`, `+`) van een regel. Voeg de optie `-E` toe om uitgebreide reguliere expressies te gebruiken.

Bestandsnaam uitvoercontrole

Bij het doorzoeken van meerdere bestanden geeft de optie `-c` standaard de telresultaten weer met de bestandsnaam ervoor. Als u de bestandsnamen wilt weglaten en alleen het totaal wilt verkrijgen, kunt u dit doen door `awk` te combineren, zoals `grep -c "pattern" file1 file2 | awk '{s+=$1} END {print s}'`, of door het te gebruiken zoals `find . -name "*.log" -exec grep -c "pattern" {} + | awk '{s+=$1} END {print s}'`.


Hétzelfde categoriecommando