Je recherche un outil de type grep pour rechercher des chaînes purement littérales. Je recherche l'occurrence d'une ligne d'un fichier journal, en tant que partie 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 rechercherait simplement les occurrences littérales d’une chaîne?
Vous pouvez utiliser grep pour cela, avec l'option -F.
-F, --fixed-strings PATTERN is a set of newline-separated fixed strings
C'est soit fgrep
ou grep -F
qui ne fera pas d'expressions régulières. fgrep
est identique à grep -F
mais je préfère ne pas avoir à me soucier 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).
Passez -F
à grep
.
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 uniquement
awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file
cat list.txt
one:hello:world
two:2:nothello
three:3:kudos
grep --color=always -F"hello
three" list.txt
one:hello:world
three:3:kudos