Het is bekend dat programma's met een grafische interface handiger zijn om te gebruiken, omdat ze zijn ontworpen voor hoge eisen, plus de terminal stelt je in staat om bepaalde taken veel sneller op te lossen. Zo is er het hulpprogramma wc, dat het aantal regels in een bestand kan tellen. Het aantal regels zegt niet veel, maar in het geval dat meerdere commando's worden gecombineerd, kun je de regels tellen, rekening houdend met de benodigde parameters. Hoe regels tellen in een Linux-bestand? Laten we een paar eenvoudige maar effectieve voorbeelden geven van het gebruik van de commando's grep, sed en awk.
We hebben al gekeken naar het commando grep, nu moeten we vertrouwd raken met een van de belangrijkste parameters -l
. Het telt overgangen naar een nieuwe regel, dat wil zeggen dat de hele regel wordt geteld, inclusief lege regels. Het commando voert de taak sneller uit dan alle andere, maar alleen bepaalde strings zijn mogelijk - met een gegeven voorwaarde.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Zoals we kunnen zien, is het resultaat hetzelfde, maar kostte het wc commando minder tijd om de taak te voltooien. De andere commando's zijn geschikt voor complexe zoekopdrachten. Met de opdracht grep kun je strings met alleen tekst vinden: grep -c 'text' file_name
.
$ grep -c 'text' file_name
Het grep commando verwerkt reguliere expressies, zodat je meerdere AND, OR, NOT condities kunt combineren.
Met sed kun je tekst verwerken, maar het is veel eenvoudiger om een laatste regeltelling uit te voeren met het commando wc. Je kunt alle regels verwijderen die minder dan drie tekens lang zijn. en complexe gevallen worden geteld zonder commentaar.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Als de opdracht eenvoudig is, kan het op andere manieren. Het awk commando zal eenvoudiger en makkelijker te begrijpen zijn.
$ awk 'length >3' file_name | wc -l
Laten we, voor een visueel voorbeeld van het awk commando, het tellen van tekenreeksen uitvoeren terwijl we zoeken naar de gewenste waarde in het csv tabelbestand.
In het voorbeeld tellen we het aantal rijen waarvan de waarde van de tweede parameter meer dan 50 is.
$ awk '$2+0 > 50' file_name | wc -l
Voeg 0 toe aan de expressie om alle niet-numerieke expressies te verwijderen.