行間の行を取得するには?

行間の行を取得するには?

Perl onelinerがあります。

echo -e 'sla\ndfjAAAAk\nsaljdfla\nsjdfBBBBsadf\njasdf' | perl -E 'my $_ = do { local $/; <> }; say join qq!\n!, m!\QAAAA\E\K(.*?)(?=\QBBBB\E)!gs'
k
saljdfla
sjdf

動作しますが、次の出力が必要です。

dfjAAAAk
saljdfla
sjdfBBBBsadf

したがって、「from」と「to」だけでなく、「AAAA」と「BBBB」も含む行が必要です。どうすればいいですか?

ベストアンサー1

欲しい範囲オペレーター。ファイルを「食べる」必要もありません。

STR='sla\ndfjAAAAk\nsaljdfla\nsjdfBBBBsadf\njasdf' 
echo -e ${STR} | perl -nE 'm{^dfjAAAAk}..m{^sjdfBBBB} and print'
dfjAAAAk
saljdfla
sjdfBBBBsadf

おすすめ記事