我想要一个 grep 类型的工具来搜索纯文字字符串。我正在寻找一个日志文件的一行的出现,作为一个单独的日志文件中的一行的一部分。搜索文本可以包含所有类型的正则表达式特殊字符,例如 []().*^$-\。
[]().*^$-\
有没有 Unix 搜索工具不使用正则表达式,而只是搜索字符串的文字出现?
把 -F传给 grep。
-F
grep
您可以使用 grep 来实现这一点,使用-F 选项。
-F, --fixed-strings PATTERN is a set of newline-separated fixed strings
这是 fgrep或 grep -F,它们不会执行正则表达式。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).
你也可以使用 awk,因为它有能力找到固定的字符串,以及编程能力,例如只
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
我非常喜欢 GNUgrep 中的 -P标志,它可以选择性地忽略特殊字符。
-P
它使 grep -P "^some_prefix\Q[literal]\E$"成为可能
grep -P "^some_prefix\Q[literal]\E$"
从 Grep 手册
- P-perl-regexp 将 I 解释为兼容 Perl 的常规 此选项在以下情况下是实验性的 combined with the -z (--null-data) option, and grep -P may 未实现特性的警告。