tel het aantal regels in terminaluitgang

kon dit niet vinden op SO. Ik heb het volgende commando in de terminal uitgevoerd:

>> grep -Rl "curl" ./

en dit toont de lijst met bestanden waarin het trefwoord curl voorkomt. Ik wil het aantal bestanden tellen. De eerste manier die ik kan bedenken, is om het aantal regels te tellen in de uitvoer die in de terminal is binnengekomen. Hoe kan ik dat doen?


Antwoord 1, autoriteit 100%

Plaats het resultaat naar wcmet behulp van de -l(aantal regels) schakelaar:

grep -Rl "curl" ./ | wc -l

Antwoord 2, autoriteit 11%

De opmerking van EaterOfCode hier als antwoord plaatsen.

grep zelf heeft ook de vlag -c die alleen de telling teruggeeft

Dus het commando en de uitvoer kunnen er zo uitzien.

$ grep -Rl "curl" ./ -c
24

BEWERKEN:

Hoewel dit antwoord misschien korter is en dus beter lijkt dan het geaccepteerde antwoord (dat wil zeggen het gebruik van wc). Ik ben het hier niet meer mee eens. Ik heb zin om te onthouden dat je lijnen kunt tellen door naar wc -lte pipen, veel nuttiger is omdat je het ook met andere programma’s dan grepkunt gebruiken.


Antwoord 3, autoriteit 2%

Piping naar ‘wc’ zou beter kunnen zijn ALS de laatste regel eindigt met een nieuwe regel (ik weet dat dat in dit geval wel het geval zal zijn)
Als de laatste regel echter niet eindigt met een nieuwe regel, geeft ‘wc -l’ een fout resultaat terug.

Bijvoorbeeld:

$ echo "asd" | wc -l

Zal 1en

. terug

$ echo -n "asd" | wc -l

Zal 0

teruggeven


Dus wat ik vaak gebruik is grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1
$ echo -n "asd" | grep "^.*$" -c
1

Dit komt dichter bij de werkelijkheid dan wat wc -lzal retourneren.


Antwoord 4

"abcd4yyyy" | grep 4 -cgeeft de telling als 1

Other episodes