8
votes

Comment rechercher plusieurs chaînes dans un fichier

Je souhaite rechercher l'occurrence de String1 ou String2 ou String3, etc. dans un fichier et imprimez uniquement les lignes (au stdout ou à un fichier, l'un ou l'autre). Comment puis-je facilement faire cela à Bash?


1 commentaires

Pour trouver toutes les chaînes à l'intérieur d'un fichier, vous pouvez exécuter Grep dans la boucle: Unix.stackexchange.com/a/462445/ 43233


5 Réponses :


7
votes
grep "string1\|string2\|string3" file_to_search_in

1 commentaires

Merci, Chen, pour votre réponse rapide. Bien sûr, cela fonctionne - Slick!



0
votes

Aussi:

grep -e 'string1' -e 'string2' -e 'string3'


1 commentaires

Merci, Randy, a travaillé comme un charme! Et, pendant ce temps, j'ai trouvé un de plus: Egrep 'String1 | String2' Infile



17
votes

Vous pouvez également utiliser AWK

awk '/string1/ && /string2/ && /string3/' file


0 commentaires

1
votes

avec perl: xxx pré>

avec BASH One Doublure: p> xxx pré>

avec BASH Script: P>

[[ $line=~string1|string2 ]] # will be alway true...
[[$line =~ string1|string2]] # syntax error


1 commentaires

Les accolades bouclées peuvent être omises de votre doublure Bash One. Le faire et fait le faire pour vous.



3
votes

Un autre choix, surtout si le nombre de chaînes que vous souhaitez rechercher est grand, c'est de mettre ces chaînes dans un fichier délimité par les nouvelles lignes et d'utiliser: xxx


0 commentaires