web-dev-qa-db-ja.com

パイプをgrepする方法|

パイプ文字|または文字>を含む行をgrepするにはどうすればよいですか。

files content:
|this is test
where is >
this is none

今私がgrepコマンドを使用する必要があるのは

grep -iE "<some expression>" file_name

出力:

|this is test
where is >
14
Özzesh

標準のgrep構文:

grep '[>|]'

または

grep -e '>' -e '|'

または

grep '>
|'

または

grep -E '>|\|'
11

GNU grepを使用している場合、これはor演算子(|)、エスケープする必要があります(前にバックスラッシュ\)。したがって、パイプまたは大なり記号のいずれかを含む行を見つけるには、文字列にor演算子を含めます:

grep '|\|>' infile

出力:

|this is test
where is >
6
Thor

ブラケット式を使用して、必要な文字のいずれかに一致します。

grep "[|>]" infile

出力:

|this is test
where is >
1
zagrimsan

これを行う正しい方法は、POSIXで指定されている-eフラグを使用することです。例えば:

grep -e '>\||' infile
0