Você deseja o operador intervalo . Você não precisa "fazer slurp" no seu arquivo.
STR='sla\ndfjAAAAk\nsaljdfla\nsjdfBBBBsadf\njasdf'
echo -e ${STR} | perl -nE 'm{^dfjAAAAk}..m{^sjdfBBBB} and print'
dfjAAAAk
saljdfla
sjdfBBBBsadf
Eu tenho um 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
funciona, mas eu preciso dessa saída:
dfjAAAAk
saljdfla
sjdfBBBBsadf
então eu preciso das linhas que contêm "AAAA" e "BBBB" também - não apenas "de" e "para" elas. Como posso fazer isso?
Você deseja o operador intervalo . Você não precisa "fazer slurp" no seu arquivo.
STR='sla\ndfjAAAAk\nsaljdfla\nsjdfBBBBsadf\njasdf'
echo -e ${STR} | perl -nE 'm{^dfjAAAAk}..m{^sjdfBBBB} and print'
dfjAAAAk
saljdfla
sjdfBBBBsadf
Tags text-processing perl