Eternels problemes avec grep

Résolu
salut a tous,
j'ai une variable qui contient un texte sur plusieurs lignes :
$ echo "$mtpt"
/home/santiago/folder
/home/santiago/folder/file
/home/santiago/folder1
/var/home/santiago/folder/file

Je voudrais isoler tous les chemins sous /home/santiago/folder (inclus). Je veux donc extraire :
/home/santiago/folder
/home/santiago/folder/file

J'ai d'abord essaye :
$ echo "$mtpt" | grep '^/home/santiago/folder'
/home/santiago/folder
/home/santiago/folder/file
/home/santiago/folder1

La j'ai une ligne en trop. Mais si je fais :
$ echo "$mtpt" | grep '^/home/santiago/folder/'
/home/santiago/folder/file

Il me manque une ligne

Comment faire pour dire "soit un slash, soit la fin de la ligne"

Merci d'avance
Santiago

--

Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.

6 réponses

  1. je pensais aussi comme dubcek, mais ça ne marche pas. En bidouillant un peu, je suis arrivé à cela en utilisant egrep plutôt que grep

    egrep '(/home/e)($|/)'
    1
    1. Modérateur
      Salut,

      Pour ma part j'avais ceci avec "egrep" :
      echo "$mtpt" | egrep  "^/home/santiago/folder($|/.*)"
      ou
      grep -E  "^/home/santiago/folder($|/.*)"
      ;-))
      1
      1. Contributeur
        hello
         echo "$mtpt" | grep '^/home/santiago/folder[ /$ ]'


        enlever les espaces entre les [
        0
        1. bonjour dubcek,
          as tu teste ta proposition ?
          0
          1. la solution est
            $ echo "$mtpt" | grep -e '^/home/santiago/folder\(/.*\)*$'


            0
            1. bravo iluvatar et jipicy,

              avec grep, c'est l'option -E que j'avais omis (et je viens de comprendre que c'est synonyme de egrep).

              donc au final, voila la syntaxe que j'ai retenu :
              echo "$mtpt" | grep -E '^/home/santiago/folder(/|$)'

              si ca vous interesse, j'ai poste mon script final afin qu'il soit teste par le plus grand nombre et que je puisse corriger le plus d'erreurs possible.

              0