Compter le nombre d'occusrence d'un caractere

chrisotphe1371 -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
comment feriez vous pour compter le nombre de slash de la chaine ligne="p3g/ACT/cfg" par exemple

merci
Configuration: Windows XP
Firefox 2.0.0.4

8 réponses

  1. de_passage
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Une solution parmi tant d'autres :
    echo "p3g/ACT/cfg" | grep -o "/" | wc -l
    ;-))
    1
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    print ligne.count('/')

    (en python)
    0
  4. chrisotphe1371
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chrisotphe1371
     
    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
  7. chrisotphe1371
     
    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
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
     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
  9. chrisotphe1371
     
    Bonjour,
    je viens de m'appercevoir qu'il fo des crochets dans la condition du while

    merci tlm
    0