Occurences de caractère (shell script)

Fermé
momsse - 7 mai 2007 à 11:33
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 oct. 2012 à 18:19
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 mai 2007 à 11:54
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 6 Date d'inscription lundi 31 octobre 2011 Statut Membre Dernière intervention 3 novembre 2013
23 oct. 2012 à 18:12
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
23 oct. 2012 à 18:19
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 mai 2007 à 11:43
Salut,
sed 's/./&\n/g'
;-))
0
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 mai 2007 à 12:08
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
Je te remercie pour ton aide, je vais essayer de mettre ca en exercice ...
0