[script bash] compter le nombre de caractères

Encore une question pour le projet que je dois rendre bientôt (je suis dans un IUT d'informatique):

Comment pourais-je faire pour compter le nombre de "/" sur une ligne d'un fichier texte ?
Chaque ligne est en fait le chemin complet permetant d'acceder à un fichier, elle peut donc contenir des espaces si un dossier porte un nom de plusieurs mots.
j'ai pensé à 'wc' (word counter) mais je ne sais pas comment l'utiliser pour qu'il compte les /, et je ne sais pas s'il existe une autre commande pour compter les occurences d'un seul caractère dans une chaine donnée.

(j'arrive a selectionner la ligne voulue et à en récuperer des morceaux, mon problème est juste d'arriver à les compter)

Merci beaucoup !

Et merci à ceux qui ont répondu à toutes mes précédentes questions, ça m'a beaucoup aidé à avancer !

7 réponses

  1. Webmaster
    Bonsoir.

    Y'a sans doute beaucoup de façon de faire ça

    En voilà déjà une:
    PBG4:~ adrien$ cat test
    /klsjdq
    /qsd/qsdgfd
    /zer/ghf/sdf
    /zer/fgh/vcbb/ret
    PBG4:~ adrien$ awk 'BEGIN{ FS="/" }{ print NF-1 }' test 
    1
    2
    3
    4
    Séparateur de champ: "/"
    Nombre de champs dans la ligne courante: "NF"
    Nombre de séparateurs de champ: "NF-1"

    @+
    0
    1. Merci beaucoup, je vais essayer ça !

      Encore une question, qui me permettrait d'améliorer un peu mon proogramme:
      Est-ce qu'il est possible de limiter le nombre de caractères lus par la commande 'read' ?
      Je voudrais que l'utilisateur ne puisse taper qu'un nombre limité de caractères, par exemple 30, plutôt que de devoir couper un morceau du texte par la suite !

      Merci !
      0
      1. Webmaster
        Pas de problemes:
        -n nchars
                             read returns after reading nchars characters rather  than
                             waiting for a complete line of input.


        (cf man bash, section SHELL BUILTIN COMMANDS /read)

        Bonne nuit!
        0
        1. Merci !

          Bonne nuit à toi aussi, j'essayerai tout ça demain, et je pense que j'arriverai à tout finir avec ça.
          0
          1. Pour information :

            si file vaut /home/toto/dir/foo.txt

            ${file##*/} vaut foo.txt ! Ce qui devrait répondre à la question.

            Cordialement.
            0
            1. C'est peu être une question débile car je ne dois pas avoir le niveau... Mais où faut il recopier la commande pour qu'elle s'éxécute ? =)
              0
              1. Nan c'est bon problème réglé !

                Merci =)
                0