119 votes

Grep pour cordes littérales

Je suis à la recherche d'un outil de type grep pour rechercher des cordes purement littérales. Je cherche l'occurrence d'une ligne d'un fichier journal, dans le cadre d'une ligne dans un fichier journal séparé. Le texte de recherche peut contenir toutes sortes de caractères spéciaux REGEX, par exemple, []().*^$-\.

Existe-t-il un utilitaire de recherche Unix qui n'utiliserait pas regex, mais chercherait simplement les occurrences littérales d'une chaîne ?

158voto

Scott Stafford Points 13161

Vous pouvez utiliser grep pour cela, avec l'option -F.

-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings

19voto

paxdiablo Points 341644

C'est soit fgrep soit grep -F qui ne fera pas d'expressions régulières. fgrep est identique à grep -F mais je préfère ne pas avoir à m'inquiéter des arguments, étant intrinsèquement paresseux :-)

grep   ->  grep
fgrep  ->  grep -F  (fixed)
egrep  ->  grep -E  (extended)
rgrep  ->  grep -r  (recursive, on platforms that support it).

4voto

Passez -F à grep.

3voto

ghostdog74 Points 86060

vous pouvez également utiliser awk, car il a la capacité de trouver une chaîne fixe, ainsi que des capacités de programmation, par exemple seulement

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file

2voto

parandhaman Points 31
cat list.txt
one:hello:world
two:2:nothello

three:3:kudos

grep --color=always -F"hello

three" list.txt

sortie

one:hello:world
three:3:kudos

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