Comment compter l'occurrence d'un caractère spécifique dans une chaîne ou un fichier à l'aide de bash
Vous trouverez ci-dessous quelques conseils sur la façon de compter une occurrence de caractère spécifique dans un fichier ou dans une chaîne. Le dit que nous avons une chaîne "Hello Bash":
STRING="Hello Bash"
echo $STRING
Hello Bash
En utilisant Bash Shell, nous pouvons désormais compter une occurrence d'un caractère donné. Par exemple, comptons le nombre d'occurrences d'un caractère l :
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
2
La commande sed sépare d'abord toute chaîne donnée à plusieurs lignes. Où chaque ligne contient un seul caractère:
echo $STRING | sed -e 's/\(.\)/\1\n/g'
H
e
l
l
o
B
a
s
h
Après cela, nous pouvons utiliser la commande grep pour rechercher uniquement des caractères spécifiques. Dans ce cas, nous imprimons uniquement le caractère l :
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l
l
l
Ce qui reste, c'est utiliser wc -l pour simplement compter les lignes:
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
2
La même stratégie peut également être utilisée pour compter une occurrence de caractère dans un fichier. La commande ci-dessous Bash Shell compte combien de fois un caractère l apparaît dans le fichier /etc/services :
$ cat /etc/services | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
9298
Pourtant, une autre alternative pour compter l'occurrence des caractères consiste à utiliser l'option de Grep pour imprimer uniquement les caractères correspondants : - ne correspondant que ou -o
grep -o l /etc/services | wc -l
9298