Remova as linhas após a primeira partida

Dec 31 2020

Preciso remover todas as linhas após a primeira linha que contém a palavra "raposa"

Digamos, por exemplo, para o seguinte arquivo de entrada "in.txt"

The quick
brown fox jumps
over
the
lazy dog
the second fox
is hunting

O resultado será

The quick
brown fox jumps

Eu prefiro um script feito em awk ou sed, mas qualquer outra ferramenta de linha de comando é boa, como perl ou php ou python etc.

Para fins de pesquisa, adicionarei esta linha:

Remova as linhas após a ocorrência

Edição posterior:

Estou usando as ferramentas gnuwin32 no Windows e a solução que consegui encontrar foi esta:

grep -m1 -n fox in.txt | cut -f1 -d":" > var.txt
set /p MyNumber=<var.txt
head -%MyNumber% in.txt > out.txt

No entanto, estou procurando uma solução que seja mais curta e portátil (esta contém o comando específico do Windows "set / p"

Perguntas semelhantes:

  • Como deletar todas as linhas após a última ocorrência do padrão?

  • Como deletar linhas antes de uma partida preservá-la?

  • Remova todas as linhas antes de uma partida com sed

  • Como deletar as linhas começando da 1ª linha até a linha antes de encontrar o padrão '[ERROR] -17-12-2015' usando sed?

  • Como deletar todas as linhas antes da primeira e depois da última ocorrência de uma string?

Respostas

3 Cyrus Dec 31 2020 at 03:59
awk '{print} /fox/{exit}' file

Com GNU sed:

sed '0,/fox/!d' file

ou

sed -n '0,/fox/p' file