Unixコマンドを使用して中国語の文字を含む行または###を含む行を印刷するにはどうすればよいですか?

Unixコマンドを使用して中国語の文字を含む行または###を含む行を印刷するにはどうすればよいですか?

テキストファイルがあり、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 pat2GNU 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

おすすめ記事