テキストファイルがあり、Unixコマンド(どんなものでも構いません)を使用して、中国語の文字を含む行または###文字列を含む行を印刷したいと思います。
この回答中国語の文字を含む行を印刷するためのgrepコマンドがあります。
grep -P '[\p{Han}]' filename.txt
私はこれがPerl正規表現であることを知っています。これにより、### を含む行が印刷されます。
grep '###' filename.txt
しかし、私はそれらをどのように結合(または)するのかわかりません。grep -e '###' -P '[\p{Han}]'
私が期待するようにすればこの回答簡単に言えば、漢字を含む行は印刷されません。
質問:Unixコマンドを使用して中国語の文字を含む行または###を含む行を印刷するにはどうすればよいですか?
ああ、あなたが助けてくれたら、
中文 keep this line
### keep this line
don't keep this line
出力すべき
中文 keep this line
### keep this line
ベストアンサー1
通常、-e pat1 -e pat2
GNU grepバージョン3.4を使用して複数のパターンを組み合わせることができますが、少なくともGNU grepバージョン3.4の場合、グローバル-P
オプションは単一パターンのみを受け入れます。
$ grep -P -e '[\p{Han}]' -e '###' filename.txt
grep: the -P option only supports a single pattern
したがって、正規表現に代替項目を入れる必要があります。
grep -P -e '[\p{Han}]|###' filename.txt
そうでなければ
grep -P '\p{Han}|###' filename.txt
(単一パターンの場合はオプションです。以下がない場合は、-e
角かっこ式を使用する必要はありません。[ ]
置く一致させる文字または属性)。
あるいは、例えばPerlの正規表現を直接使用することを好むかもしれません。
perl -CDS -ne 'print if /\p{Han}/ or /###/' filename.txt