Compter le nombre d'occusrence d'un caractere

Fermé
chrisotphe1371 - 11 oct. 2007 à 10:47
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 11 oct. 2007 à 19:24
Bonjour,
comment feriez vous pour compter le nombre de slash de la chaine ligne="p3g/ACT/cfg" par exemple

merci
A voir également:

8 réponses

Bonjour,

une solution (parmi des dizaines)
echo p3g/ACT/cfg | awk '{print gsub("/","/")}'

si le fichier toto.txt contient la chaine ligne="p3g/ACT/cfg"
awk '{print gsub("/","/")}' toto.txt
1
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
11 oct. 2007 à 19:24
Salut,

Une solution parmi tant d'autres :
echo "p3g/ACT/cfg" | grep -o "/" | wc -l
;-))
1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 oct. 2007 à 10:54
print ligne.count('/')

(en python)
0
chrisotphe1371
11 oct. 2007 à 10:59
Bonjour,
j'obtiens l'erreur suivante avec ce que tu m'as proposé de_sauvage
awk: syntax error near line 1
awk: illegal statement near line 1

a quoi sert la fonction gsub???
0

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

Posez votre question
chrisotphe1371
11 oct. 2007 à 11:02
Bonjour,
ok merci tlm
j'ai trouver :
typeset -i nb NB
nb=$(echo "nom_chaine"| sed -e 's/\///g' | wc -c)
NB=${#nom_chaine}-$nb+1

$NB contient le nombre de slash
0
chrisotphe1371
11 oct. 2007 à 11:31
Bonjour,
ligne="p3g/ACT/cfg"
typeset -i nb nb_slash
nb=$(echo "$ligne"| sed -e 's/\///g' | wc -c)
nb_slash=${#ligne}-$nb+1

while $nb_slash -ne "0"
do

if [ $(ls -l $ligne |wc -l) -eq '1']
then
#rm -R $ligne
echo "le dossier ${ligne} est supprimer"
fi
$ligne=$(dirname $ligne)
$nb_slash=$(($nb_slash - 1))
done

ce bout de programme test si les dossiers sont vides ou non
j'ai un pb, j'ai une erreur :
test.sh[9]: 2: not found
je ne sais pas dou ca vient
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 oct. 2007 à 12:07
 if [ $(ls -l $ligne |wc -l) -eq 1 ] 

avec -eq il faut tester le nombre 1 pas le caractère 1 et un espace avant le ]
0
chrisotphe1371
11 oct. 2007 à 13:45
Bonjour,
je viens de m'appercevoir qu'il fo des crochets dans la condition du while

merci tlm
0