행 사이의 행을 얻는 방법은 무엇입니까?

행 사이의 행을 얻는 방법은 무엇입니까?

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

관련 정보