web-dev-qa-db-ja.com

リテラル文字列のGrep

私は純粋にリテラルな文字列を検索するgrepタイプのツールを探しています。別のログファイルの行の一部として、ログファイルの行の発生を探しています。検索テキストには、[]().*^$-\など、あらゆる種類の正規表現の特殊文字を含めることができます。

正規表現を使用せず、文字列のリテラル出現を検索するだけのUnix検索ユーティリティはありますか?

82
Ben

-Fオプションを使用して、そのためにgrepを使用できます。

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

これは、正規表現を行わないfgrepまたはgrep -Fのいずれかです。 fgrepgrep -Fと同じですが、本質的に遅延しているため、引数について心配する必要はありません:-)

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

パス -Fからgrepへ。

awkを使用することもできます。これは、固定文字列を検索する機能とプログラミング機能を備えているためです。たとえば、

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

出力

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