[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: un peu de grep



Non ta solution Laurent ne marche pas car ton expression matche aussi
"/dev/0mb" et "/dev/1mb".
De plus l'opérateur "|" ne marche pas avec grep (qui ne gère pas les
expressions régulières étendues avec alternatives), mais avec egrep.
De plus l"opérateur "[]" dans grep ne sert pas à désigner des
sous-expressions, mais un caractère dans une classe de caractères.

La solution: reconnaitre le caractère suivant pour exclure le "b" après le
"m", ou accepter un "m" en fin de ligne. Mais il faut une alternative, donc
ça exclue les expressions régulières simples, et donc utiliser egrep pour
accepter l'opérateur "|" :

egrep "[/]dev[/]rmt[/][01])m[^b]|[/]dev[/]rmt[/][01]m[^b]$"

Ici la répétition de l'expression est nécessaire car l'opérateur de fin de
ligne "$" ne peut pas être parenthésé, ce qui serait nécessaire dans la
mesure où il faut combiner les deux alternatives (fin de ligne, ou caractère
non "b").

> >>>>> "Kazem" == BAKHSHESH Kazem (SoftCompagny) <BAKHSHEK@ESSILOR.fr>
writes:
>
>   Kazem> Bonjour Comment je peux récupérer que /dev/rmt/1m et
>   Kazem> /dev/rmt/0m dans des lignes avec
>
>   Kazem>                           /dev/rmt/1m /dev/rmt/0mb
>   Kazem> /dev/rmt/0m /dev/rmt/1mb
>
>   Kazem> Voila mon essai sans suces echo $ligne | grep "[ [
>   Kazem> /\{1,\}0\{1,\}m] | [ /\{1,\}1\{1,\}m] ]")
>
> Et pourquoi pas tout simplement grep "/dev/rmt/1m|/dev/rmt/0m" ?




Reply to: