Em grep
você pode usar --group-separator
para escrever algo entre as correspondências do grupo.
Isso é útil para esclarecer quais blocos temos, especialmente ao usar a -C X
opção para obter linhas de contexto.
$ cat a
hello
this is me
and this is
something else
hello hello
bye
i am done
$ grep -C1 --group-separator="+++++++++" 'hello' a
hello
this is me
+++++++++
something else
hello hello
bye
Aprendi em Usando a linha vazia como contexto "separador de grupo" para grep como ter apenas uma linha vazia, dizendo --group-separator=""
.
No entanto, e se eu quiser ter duas linhas vazias? Eu tentei dizer, --group-separator="\n\n"
mas recebo literal \n
s:
$ grep -C1 --group-separator="\n\n" 'hello' a
hello
this is me
\n\n
something else
hello hello
bye
Outras coisas como --group-separator="\nhello\n"
também não funcionaram.
printf
ouecho
. No seu caso,grep -C1 --group-separator=$'hello\nfedorqui' 'hello' a
é equivalente.$''
seu seria o melhor caminho a percorrer!$'$var'
(incapaz de expandir / imprimir o valor da variável se definida por aspas simples!), certo? enquanto"$(echo $var)"
pode funcionar.$'"$var"'
. Isso é$'
+"$var"
+'
.