Por padrão, grep
lê e processa linhas únicas.
Nas versões mais recentes de grep
, você pode usar a opção -z
para dizer a ela para considerar sua entrada como nula separada em vez de separada por nova linha; já que sua entrada não tem terminações nulas, é essencialmente equivalente ao modo 'slurp' do perl. Então você poderia fazer
$ grep -zPo '{[^}]*}' testttt
{It captures this! }
{
It can't
capture this!!! why?
}
ou, mais apropriadamente, usando uma correspondência .*?
não-gananciosa com (?s)
para incluir novas linhas em .
$ grep -zPo '(?s){.*?}' testttt
{It captures this! }
{
It can't
capture this!!! why?
}
Como alternativa, se pcregrep
estiver disponível,
$ pcregrep -Mo '(?s){.*?}' testttt
{It captures this! }
{
It can't
capture this!!! why?
}