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? P>
5 Réponses :
grep "string1\|string2\|string3" file_to_search_in
Merci, Chen, pour votre réponse rapide. Bien sûr, cela fonctionne - Slick!
Aussi:
grep -e 'string1' -e 'string2' -e 'string3'
Merci, Randy, a travaillé comme un charme! Et, pendant ce temps, j'ai trouvé un de plus: Egrep 'String1 | String2' Infile
Vous pouvez également utiliser AWK
awk '/string1/ && /string2/ && /string3/' file
avec perl: avec BASH One Doublure: p> avec BASH Script: P> [[ $line=~string1|string2 ]] # will be alway true...
[[$line =~ string1|string2]] # syntax error
Les accolades bouclées peuvent être omises de votre doublure Bash One. Le faire code> et fait code> le faire pour vous.
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:
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