[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. Nan c'est bon problème réglé !

    Merci =)
    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. Pour information :

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

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

        Cordialement.
        0
        1. Merci !

          Bonne nuit à toi aussi, j'essayerai tout ça demain, et je pense que j'arriverai à tout finir avec ça.
          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 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
                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