2つのパターンの間(および含む)の線を印刷します。

2つのパターンの間(および含む)の線を印刷します。

CKD行末の行でgrepを起動し、行末の行でgrepを停止したいと思います。試してみましたがgrep "$CK" "$D" file..txt成功しませんでした。

入力する:

kkkkkkkkkkk   
jjjjjjjjjjjjjjjjjj  
gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D  
GGGGGGGGGGGGGG  
GGGGGGGGGGGGGG

希望の出力:

gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D

ベストアンサー1

使えばいいと思います。または

awk '/CK$/,/D$/' file.txt

または

sed -n '/CK$/,/D$/p' file.txt

主張している場合、これはGNU grep方式です。

grep -oPz '(?s)(?<=\n)\N+CK\n.*?D(?=\n)' file.txt

ここ

-PPerl-regexpを有効にする

-z行区切り文字を NUL に設定します。これにより、grepはファイル全体を1行として処理します。

-o一致するもののみ印刷

(?s).すべての文字や改行文字を見つけるためにPCRE_DOTALLを有効にしてください。

\N改行を除くすべての項目と一致します。

.*?非欲望モードで。

(?<=..)逆方向の主張です

(?=..)予見主張だ

おすすめ記事