Grep для буквенных строк - PullRequest
81 голосов
/ 14 июля 2010

Мне нужен инструмент типа grep для поиска чисто литеральных строк. Я ищу вхождение строки файла журнала, как часть строки в отдельном файле журнала. Текст поиска может содержать все виды специальных символов регулярных выражений, например, []().*^$-\.

Существует ли поисковая утилита Unix, которая бы не использовала регулярные выражения, а просто искала буквальные вхождения строки?

Ответы [ 5 ]

112 голосов
/ 14 июля 2010

Для этого вы можете использовать grep с опцией -F.

-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings
10 голосов
/ 14 июля 2010

Это либо fgrep, либо grep -F, который не будет выполнять регулярные выражения. fgrep идентичен grep -F, но я предпочитаю не беспокоиться об аргументах, потому что по сути ленив

grep   ->  grep
fgrep  ->  grep -F  (fixed)
egrep  ->  grep -E  (extended)
rgrep  ->  grep -r  (recursive, on platforms that support it).
3 голосов
/ 14 июля 2010

вы также можете использовать awk, так как он имеет возможность найти фиксированную строку, а также возможности программирования, например, только

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file
3 голосов
/ 14 июля 2010

Pass -F до grep.

1 голос
/ 09 марта 2016
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...