Existe-t-il un moyen de compter sous linux/terminal, combien de fois le caractère f apparaît dans un fichier en texte brut?
Que dis-tu de ça:
fgrep -o f <file> | wc -l
Remarque: outre qu'il est beaucoup plus facile de mémoriser/dupliquer et personnaliser, cela est environ trois fois plus rapide que la réponse de Vereb.
même plus vite:
tr -cd f < file | wc -c
heure de cette commande avec un fichier contenant 4,9 MB et 1100000 occurrences du caractère recherché:
real 0m0.089s
user 0m0.057s
sys 0m0.027s
Il est temps que Vereb réponde avec echo
, cat
, tr
et bc
pour le même fichier:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Il est temps que Rob Hruska réponde avec tr
, sed
et wc
pour le même fichier:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Il est temps que Jefromi réponde avec fgrep
et wc
pour le même fichier:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
où le A est le personnage
Temps pour cette commande avec un fichier avec 4,9 Mo et 1100000 occurrences du caractère recherché:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Si tout ce que vous avez à faire est de compter le nombre de lignes contenant votre personnage, cela fonctionnera:
grep -c 'f' myfile
Cependant, il compte plusieurs occurrences de "f" sur la même ligne comme une seule correspondance.
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
Remplacer les deux occurrences de "A" par votre personnage et de "fichier" par votre fichier d'entrée.
tr -d '\n' < file
: supprime les nouvelles lignessed 's/A/A\n/g
: ajoute une nouvelle ligne après chaque occurrence de "A"wc -l
: compte le nombre de lignesExemple:
$ cat file
abcdefgabcdefgababababbbba
1234gabca
$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9