Rimuovi le righe dopo la prima corrispondenza

Dec 31 2020

Devo rimuovere tutte le righe dopo la prima che contiene la parola "volpe"

Dì ad esempio per il seguente file di input "in.txt"

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

Il risultato sarà

The quick
brown fox jumps

Preferisco uno script creato in awk o sed ma qualsiasi altro strumento da riga di comando è buono, come perl o php o python ecc.

A scopo di ricerca aggiungerò questa riga:

Rimuovi le righe dopo l'occorrenza

Modifica successiva:

Sto usando gli strumenti gnuwin32 in Windows e la soluzione che ho trovato è stata questa:

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

Tuttavia, sto cercando una soluzione più breve e portatile (questa contiene il comando specifico di Windows "set / p"

Domande simili:

  • Come eliminare tutte le righe dopo l'ultima occorrenza del pattern?

  • Come eliminare le righe prima di una partita mantenendola?

  • Rimuovi tutte le righe prima di una corrispondenza con sed

  • Come eliminare le righe a partire dalla prima riga fino alla riga prima di incontrare il pattern "[ERROR] -17-12-2015" utilizzando sed?

  • Come eliminare tutte le righe prima della prima e dopo l'ultima occorrenza di una stringa?

Risposte

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

Con GNU sed:

sed '0,/fox/!d' file

o

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