Eternels problemes avec grep

Résolu
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -  
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -
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

6 réponses

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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

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


enlever les espaces entre les [
0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
bonjour dubcek,
as tu teste ta proposition ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
la solution est
$ echo "$mtpt" | grep -e '^/home/santiago/folder\(/.*\)*$'


0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   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