一度にgrep

一度にgrep

私のスクリプトはパラメータを受け取り、他のファイルをgrepする必要があります。スクリプトは各パラメータを繰り返します。

ORを使用して単一の検索文字列とgrepからパラメータを収集する方法はありますか?私はすべてを一度に検索したら、私のスクリプトがより速くなることを望んでいるため、これをスピードのために実行したいと思います。どんなアイデアもありがとうございます。

答え1

grep -e foo -e bar -e baz files

または:

grep 'foo
bar
baz' files

foobarbazデフォルトの正規表現ではなく文字列の場合は、上記-Fの2つのコマンドにこのオプションを追加してくださいgrep

拡張正規表現の場合:

grep -E 'foo|bar|baz' files

文字列リストが位置パラメータ($1$2...)にある場合:

NL='
'
IFS=$NL  # or IFS=$'\n' with ksh93/zsh/bash/mksh/FreeBSD sh...
grep -Fe "$*" files

$*位置パラメータと最初の文字を連結したものです$IFS。)

答え2

egrep(またはgrep -E)次のことができます。または:

egrep "string|string|string" <file>

答え3

別のオプションは、次のものを使用することです。確認する拡張正規表現はデフォルトでサポートされています。

ack "one|two"

大文字と小文字を区別しない場合は、ack -i非標準ファイル形式の場合ack --all

関連情報