En grep
vous pouvez utiliser --group-separator
pour écrire quelque chose entre les deux matches de groupe.
Cela est pratique pour clarifier les blocs que nous avons, en particulier lorsque vous utilisez l' -C X
option pour obtenir des lignes de contexte.
$ 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
J'ai appris en utilisant la ligne vide comme contexte "séparateur de groupe" pour grep comment avoir juste une ligne vide, en disant --group-separator=""
.
Mais que faire si je veux avoir deux lignes vides? J'ai essayé de dire --group-separator="\n\n"
mais j'obtiens littéralement \n
:
$ grep -C1 --group-separator="\n\n" 'hello' a
hello
this is me
\n\n
something else
hello hello
bye
D'autres choses comme ça --group-separator="\nhello\n"
n'ont pas fonctionné non plus.
printf
ouecho
. Dans votre cas,grep -C1 --group-separator=$'hello\nfedorqui' 'hello' a
c'est équivalent.$''
vôtre serait le bon chemin à parcourir!$'$var'
(impossible de développer / imprimer la valeur de la variable si elle est définie par un guillemet simple!) non? alors que"$(echo $var)"
peut fonctionner.$'"$var"'
. C'est$'
+"$var"
+'
.