1行に1つのパターンを作成してスクリプトを読みやすくしたいと思います。
grep 'foo\|bar\|barz'
以下のように変換できる構文はありますか?
grep 'foo\|
bar\|
barz'
ベストアンサー1
パターンパラメータは、実際に改行で区切られたパターンのリストです。これは次の場合も同様ですgrep -F
。複数の文字列を検索できます。したがって、次のように書くことができます。
grep 'foo
bar
barz'
ただし、連続した行はインデントしないでください。先行スペースはパターンの一部になります。したがって、パターンリストを-e
各パターンの前に別々の引数として渡すことをお勧めします。その後、\
行の終わりにatを使用して、コマンド引数間の行にわたってシェルコマンドを分割できますgrep
。どちらの構文も同じです。
grep -e 'foo' \
-e 'bar' \
-e 'barz'
grep
オプションを渡すと-P
(PCRE正規表現の場合)、それらのどれも現在のバージョンのGNUでは機能せず、その場合は表示に失敗します。ただし、GNUの代わりにgrep: the -P option only supports a single pattern
使用でき、フラグを使用して複数行を入力できます。pcregrep
grep -P
x
pcregrep '(?x)
foo |
bar |
barz'
を使用すると、(?x)
すべての空白文字(SPCとNLを含む)が無視されるため、必要に応じてコードをインデントできます。