Eternels problemes avec grep

Résolu
santiago69 Messages postés 485 Statut Membre -  
santiago69 Messages postés 485 Statut Membre -
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. iluvatar
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Pour ma part j'avais ceci avec "egrep" :
    echo "$mtpt" | egrep  "^/home/santiago/folder($|/.*)"
    ou
    grep -E  "^/home/santiago/folder($|/.*)"
    ;-))
    1
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
     echo "$mtpt" | grep '^/home/santiago/folder[ /$ ]'


    enlever les espaces entre les [
    0
  4. santiago69 Messages postés 485 Statut Membre 209
     
    bonjour dubcek,
    as tu teste ta proposition ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. santiago69 Messages postés 485 Statut Membre 209
     
    la solution est
    $ echo "$mtpt" | grep -e '^/home/santiago/folder\(/.*\)*$'


    0
  7. santiago69 Messages postés 485 Statut Membre 209
     
    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