Occurences de caractère (shell script) [Fermé]

Signaler
-
Messages postés
35575
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
14 septembre 2020
-
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 !

5 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60786 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
lundi 31 octobre 2011
Statut
Membre
Dernière intervention
3 novembre 2013

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 ><
Messages postés
35575
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
14 septembre 2020
5 444
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

$

;-))
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) ...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
Salut,
sed 's/./&\n/g'
;-))
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 !
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 ...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
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.
;-))
Je te remercie pour ton aide, je vais essayer de mettre ca en exercice ...