2 votes

Recherche d'une expression régulière dans un fichier correspondant à une valeur donnée

J'ai quelques connaissances de base sur l'utilisation des expressions régulières avec grep (bash). Mais je veux utiliser les expressions régulières dans l'autre sens.

Par exemple, j'ai un fichier contenant les entrées suivantes :

line_one=[0-3]
line_two=[4-6]
line_three=[7-9]

Maintenant, je veux utiliser bash pour savoir à quelle ligne correspond un nombre particulier. Par exemple :

grep 8 file

devrait revenir :

line_three=[7-9]

Remarque : je suis conscient que l'exemple de "grep 8 file" n'a pas de sens, mais j'espère qu'il aidera à comprendre ce que j'essaie de faire.

Merci pour votre aide, Marcel

0voto

Walter A Points 129

Vous aimeriez faire quelque chose comme

grep -Ef <(cut -d= -f2 file) <(echo 8)

Cela vous permettra de trouver ce que vous voulez mais n'affichera pas où. Avec grep, vous pouvez afficher un message :

echo "8" | sed -n '/[7-9]/ s/.*/Found it in line_three/p' 

Vous souhaitez maintenant transférer votre fichier regexp dans de telles commandes :

sed 's#\(.*\)=\(.*\)#/\2/ s/.*/Found at \1/p#' file

Stockez ces commandes dans un fichier de commande virtuel et vous aurez

echo "8" | sed -nf <(sed 's#\(.*\)=\(.*\)#/\2/ s/.*/Found at \1/p#' file)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X