CK
D
行末の行で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
主張している場合grep、これはGNU grep方式です。
grep -oPz '(?s)(?<=\n)\N+CK\n.*?D(?=\n)' file.txt
ここ
-P
Perl-regexpを有効にする
-z
行区切り文字を NUL に設定します。これにより、grepはファイル全体を1行として処理します。
-o
一致するもののみ印刷
(?s)
.
すべての文字や改行文字を見つけるためにPCRE_DOTALLを有効にしてください。
\N
改行を除くすべての項目と一致します。
.*?
非欲望モードで。
(?<=..)
逆方向の主張です
(?=..)
予見主張だ