Existe-t-il un moyen sous linux / terminal de compter, combien de fois le caractère f apparaît-il dans un fichier texte brut?
Existe-t-il un moyen sous linux / terminal de compter, combien de fois le caractère f apparaît-il dans un fichier texte brut?
Réponses:
Que dis-tu de ça:
fgrep -o f <file> | wc -l
Remarque: En plus d'être beaucoup plus facile à mémoriser / dupliquer et personnaliser, c'est environ trois fois (désolé, éditez! A bâclé le premier test) que la réponse de Vereb.
\rou de \ncaractères; la tr -cd fréponse fonctionne pour cela.
a, bet c, utilisez egrep: egrep -o 'a|b|c' <file> | wc -l.
wc -ccomme dans la trréponse: puisque les grepsorties ligne par ligne, wccompteraient les fins de lignes comme des caractères (d'où le doublement du nombre de caractères).
\r, mais pour compter \npourquoi ne pas simplement utiliser wc -l?
même plus vite:
tr -cd f < file | wc -c
Temps pour cette commande avec un fichier avec 4,9 Mo et 1100000 occurrences du caractère recherché:
real 0m0.089s
user 0m0.057s
sys 0m0.027s
Temps de réponse Vereb avec echo, cat, tret bcpour le même fichier:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Le temps de réponse Rob Hruska avec tr, sedet wcpour le même fichier:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Il est temps de répondre Jefromi avec fgrepet wcpour le même fichier:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
a, bet c: tr -cd abc < file | wc -l.
tr -cd abc < file | wc -cplace
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
où le A est le caractère
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
cats inutiles , en donnant le nom de fichier comme argument à wcet tr.
stdin, mais cela peut être diffusé plutôt que cated:tr -d 'A' < <file> | wc ...
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
Remplacement des deux occurrences de «A» par votre caractère 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