Occurences de caractère (shell script)

momsse -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Supposons que je souhaite compter l'occurence de la lettre 'a' d'un fichier texte, existe une commande simple autre que wc -c qui permette de le faire ? (sans utiliser awk)

D'une manière générale quelles sont les commandes les plus simple à utiliser pour compter le nombre de caractères dans un fichier ou le nombre d'occurences d'un caractère précis ?

Merci d'avance !
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Re-

D'une manière générale quelles sont les commandes les plus simple à utiliser pour compter le nombre de caractères dans un fichier
Ben à part "wc -c" tu pourras guère faire plus simple...

ou le nombre d'occurrences d'un caractère précis ?
Rechercher le nombre d'occurrence de la lettre "a" dans le fichier "plop" :
grep -o "a" plop | wc -l
;-))
8
Gein- Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Pour compter le nombre d'occurence d'un caractère, la commande grep -o "a" plop | wc -l ne donnerait absolument pas le bon résultat, puisqu'ici tu comptes le nombre de lignes dans lesquelles apparait le caractère a... et si une ligne contient 10 fois a ?
Moi j'aimerai compter les occurences d'un caractère dans une seule ligne, et j'galère ><
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Pour compter le nombre d'occurence d'un caractère, la commande grep -o "a" plop | wc -l ne donnerait absolument pas le bon résultat, puisqu'ici tu comptes le nombre de lignes dans lesquelles apparait le caractère a... et si une ligne contient 10 fois a ?

Merci de lire le "man grep" et de t'intéresser principalement à l'option "-o" ;-\

Petit jeu avec ton propre texte :

$ cat brol
Pour compter le nombre d'occurence d'un caractère, la commande grep -o "a" plop | wc -l ne donnerait absolument pas le bon résultat, puisqu'ici tu comptes le nombre de lignes dans lesquelles apparait le caractère a... et si une ligne contient 10 fois a ?
Moi j'aimerai compter les occurences d'un caractère dans une seule ligne, et j'galère ><

$ grep -o "a" brol | wc -l
23

$ 

La même sans le "|wc -l" :
$ grep -o "a" brol
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a

$

Et la même uniquement sur la 2nde ligne de ton texte :
$ sed -n 2p brol | grep -o "a" | wc -l
6

$

;-))
0
momsse
 
Existe t-il aussi un moyen de tronquer une suite de chiffres de manière a obtenir depuis la suite suivante:

123456789

celle la:
1
2
3
4
5
6
7
8
9

En utilisant tr ou d'autres commande non-complexe (à la limite sed) ...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
sed 's/./&\n/g'
;-))
0
momsse
 
Je te remercie pour ta rapidité !

Autrement connais tu des commandes simples (à la limite sed) qui puisse comme indiqué dans mon premier message, compter le nombre d'occurence d'un caractère précis, et aussi compter de manière globale le nombre de caractère ... autre que la commande wc -c ?

Merci encore !
0
momsse
 
En fait ce qui ne me plait pas dans wc, c'est des résultat parfois innatendu (+ou -1 occurence, je m'explique:

echo 12345|wc -c

devrait me renvoyer 5, n'est ce pas ? Hors il renvoie à chaque reprise 6 ...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
echo -e "12345\c" |wc -c
Extrait du man wc :
       wc  compte  le  nombre  d'octets, de mots séparés par des blancs, et de
       sauts de lignes (NewLines) dans chacun des fichiers indiqués.
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
momsse
 
Je te remercie pour ton aide, je vais essayer de mettre ca en exercice ...
0