Pode-se usar sed '/pattern/Q'
ou sed '/pattern/,$d'
para excluir linhas abaixo de um padrão de correspondência, mas também exclui a linha que contém o padrão de correspondência.
Como excluir a linha que contém o padrão de correspondência e excluir apenas as linhas abaixo dela?
Você está complicando demais isso usando
Q
, que é um dos comandos específicos do GNU sed :Se você não deseja esse comportamento especial (ou seja, deseja imprimir o conteúdo do espaço padrão correspondente antes de sair), use o
q
comando normal:Isso deve servir
A
-n
opção dizsed
para não imprimir por padrão.Diz
{p;q}
que se o padrão for observado, imprima a linha e saia.Esta
;p
é a ação padrão quando nenhuma correspondência foi encontrada ainda: imprimir.Usando
awk
:O comando a seguir não imprimiria nada se
pattern
não fosse encontrado.Usando
pcregrep
:awk é uma escolha melhor que sed para tarefas como esta por simplicidade, clareza e portabilidade, por exemplo, para excluir todas as linhas abaixo de alguma linha que corresponda a uma regexp (a
3
neste caso):ou se você também deseja excluir a linha correspondente, mova para onde o regexp é testado antes, em vez de depois da impressão:
ou podemos excluir as 4 linhas após o 3 aparecer:
ou, alternativamente, usando o idioma "f" de print-with-sed-or-awk-a-line-following-a-matching-pattern :
Todos esses comandos funcionarão usando qualquer awk em todas as caixas Unix e é trivial fazer qualquer coisa semelhante que você queira fazer.
Usando Perl :
Usando Raku (anteriormente conhecido como Perl_6):
Perl e Raku emprestam muitas das convenções de sinalização de linha de comando de
sed
eawk
. Acima dos-pe
sinalizadores, execute o código em linha sobre a entrada com impressão automática; os-ne
sinalizadores executam o código em linha sobre a entrada sem impressão automática. Em todas as quatro respostas acimalast
é usado sair do loop linewise. Existem pequenas diferenças entre os operadores ternários de Perl e Raku, principalmente porque Raku implanta dois:
pontos para outros aspectos da linguagem.https://perldoc.perl.org
https://docs.raku.org