J'essaie d'utiliser grep avec une expression rationnelle pour rechercher dans un fichier des lignes qui correspondent à l'une des deux chaînes possibles. Voici mon grep:
$ grep "^ID.*(ETS|FBS)" my_file.txt
Le grep ci-dessus ne renvoie aucun résultat. Cependant si j'exécute soit:
$ grep "^ID.*ETS" my_file.txt
ou
$ grep "^ID.*FBS" my_file.txt
Je fais correspondre des lignes spécifiques. Pourquoi mon expression rationnelle OR ne correspond-elle pas? Merci d'avance pour l'aide!
grep
regular-expression
dr.bunsen
la source
la source
egrep
au lieu degrep -E
.Si vous voulez utiliser plusieurs branches (le "
|
comme"or
), alors pour être plus compatible, il est préférable de dire explicitement que vous voulez utiliser "RE moderne". AVANT.Pour ce faire, utilisez grep -E :
Pour en savoir plus sur RE, ERE et l’ensemble de l’histoire «moderne» de l’ER, voir
man 7 regex
.Sinon, vous pouvez utiliser à la
egrep
place degrep
, mais comme vous pouvez le lireman grep
:(...)
la source