Ich suche ein grep-typisches Werkzeug, um nach rein wörtlichen Zeichenketten zu suchen. Ich suche das Auftreten einer Zeile einer Protokolldatei als Teil einer Zeile in einer separaten Protokolldatei. Der Suchtext kann alle Arten von Regex-Sonderzeichen enthalten, z. B. []().*^$-\
.
Gibt es ein Unix-Suchdienstprogramm, das keinen regulären Ausdruck verwendet, sondern nur nach wörtlichen Vorkommen einer Zeichenfolge sucht?
Sie können grep dafür mit der Option -F verwenden.
-F, --fixed-strings PATTERN is a set of newline-separated fixed strings
Das ist entweder fgrep
oder grep -F
, das keine regulären Ausdrücke ausführt. fgrep
ist identisch mit grep -F
, aber ich muss mir keine Sorgen um die Argumente machen, sondern faul an sich :-)
grep -> grep
fgrep -> grep -F (fixed)
egrep -> grep -E (extended)
rgrep -> grep -r (recursive, on platforms that support it).
Übergeben Sie -F
an grep
.
sie können auch awk verwenden, da es in der Lage ist, feste Zeichenfolgen sowie Programmierfunktionen (z. B. nur) zu finden
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