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. Contributeur
    hello
     echo "$mtpt" | grep '^/home/santiago/folder[ /$ ]'


    enlever les espaces entre les [
    1. la solution est
      $ echo "$mtpt" | grep -e '^/home/santiago/folder\(/.*\)*$'


      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. Modérateur
          Salut,

          Pour ma part j'avais ceci avec "egrep" :
          echo "$mtpt" | egrep  "^/home/santiago/folder($|/.*)"
          ou
          grep -E  "^/home/santiago/folder($|/.*)"
          ;-))
          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.