A resposta será:
perl -ne ' if($p==1){if(/^ /){ print; next;} elsif(/^!/){print;}$p=0}
if(/aaa accounting exec .+/){print;$p=1}' text.txt
Onde text.txt é o arquivo que contém o texto acima mencionado na pergunta.
Eu tenho conteúdo de arquivo como este:
aaa accounting exec ...
aaa accounting exec ...
aaa accounting commands ..
aaa accounting commands ..
aaa accounting commands ..
aaa accounting commands ..
aaa accounting commands ..
aaa accounting commands ..
aaa accounting network ..
aaa accounting connection ..
aaa accounting system ..
!
aaa accounting exec default
action-type start-only
group something+
!
aaa accounting exec default stop-only group tacacs+
A saída deve ser assim:
aaa accounting exec ..
aaa accounting exec ..
aaa accounting exec default
action-type start-only
group something+
!
aaa accounting exec default stop-only group tacacs+
Eu quero obter a saída entre seguir dois padrões:
Start Pattern: /aaa accounting exec .+/
End Pattern: /!/
Qual será o código perl mais fácil de produzir a saída acima?
A resposta será:
perl -ne ' if($p==1){if(/^ /){ print; next;} elsif(/^!/){print;}$p=0}
if(/aaa accounting exec .+/){print;$p=1}' text.txt
Onde text.txt é o arquivo que contém o texto acima mencionado na pergunta.