Grep per stringhe letterali

Sto cercando uno strumento di tipo grep per cercare stringhe puramente letterali. Sto cercando l’occorrenza di una riga di un file di registro, come parte di una riga in un file di registro separato. Il testo di ricerca può contenere tutti i tipi di caratteri speciali regex, ad es. []().*^$-\ .

Esiste un’utilità di ricerca Unix che non usa la regex, ma cerca solo le occorrenze letterali di una stringa?

Puoi usare grep per questo, con l’opzione -F.

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

Quello è o fgrep o grep -F che non farà espressioni regolari. fgrep è identico a grep -F ma preferisco non preoccuparmi degli argomenti, essendo intrinsecamente pigro 🙂

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

puoi anche usare awk, in quanto ha la capacità di trovare una stringa fissa, oltre a capacità di programmazione, ad esempio solo

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

Passa da -F a grep .

 cat list.txt one:hello:world two:2:nothello three:3:kudos grep --color=always -F"hello three" list.txt 

produzione

 one:hello:world three:3:kudos