Recherche sur le site Web

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 - ne correspondant que ou -o pour imprimer uniquement les caractères correspondants :


grep -o l /etc/services | wc -l
9298

Articles connexes: