web-dev-qa-db-de.com

Grep für wörtliche Zeichenfolgen

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?

71
Ben

Sie können grep dafür mit der Option -F verwenden.

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

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).
8
paxdiablo

Ü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
3
ghostdog74
cat list.txt
one:hello:world
two:2:nothello

three:3:kudos

grep --color=always -F"hello

three" list.txt

ausgabe

one:hello:world
three:3:kudos
0
parandhaman