https://stackoverflow.com/a/7451478/15603477
Eu entendogrep -A1 'blah' logfile | grep -v "blah"
mas não entendo sed -n '/blah/{n;p;}' logfile
Até agora, verifiquei a página de opção de linha de comando sed manual: https://www.gnu.org/software/sed/manual/html_node/Command_002dLine-Options.html . Há apenas -n
meios tranquilos. obviamente /blah/
se refere ao padrão /blah/
, então difícil de entender parte é{n;p;}
Normalmente o sed imprime o que estiver no
pattern space
final do processamento. A-n
opção desativa esta impressão para que apenas solicitações de impressão explícitas produzam saída.O programa
/blah/{n;p;}
diz "Se a linha corresponderblah
, execute os comandosn
e ". diz "leia a próxima linha no " e diz "imprima o ".p
n
pattern space
p
pattern space
Observe que este programa sed produz resultados diferentes do the
grep -A1 "blah" | grep -v "blah"
para o caso em que há linhas consecutivas contendoblah
. Ogrep
par nunca produzirá uma linha comblah
, mas o sed pode. Também a saída do par grep pode conter==
que o primeiro grep introduz para dividir blocos.