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 wc
met 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 -l
te pipen, veel nuttiger is omdat je het ook met andere programma’s dan grep
kunt 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 1
en
. 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 -l
zal retourneren.
Antwoord 4
"abcd4yyyy" | grep 4 -c
geeft de telling als 1