/ / Elimina il contenuto del file dopo la riga == "xxxxxxx" - linux, bash

Elimina il contenuto del file dopo la riga == "xxxxxxx" - linux, bash

Ho un sacco di file che ho bisogno di pulire. Ho bisogno di cancellare tutte le linee sotto una linea che è uguale a qualcosa (anche quella linea dovrebbe essere rimossa).

Come posso farlo in bash?

Ho solo bisogno di un esempio di come cancellare le linee, posso fare il loop di tutti i file da solo.

risposte:

2 per risposta № 1

È più facile dire a sed di smettere quando lo vede.

sed -n "/xxxxxxx/q;p" input.txt

0 per risposta № 2

Puoi usare Perl:

perl -i.bak -pe "exit if /xxxxxxx/" filename.txt ...

Questo sostituirà i file sul posto.


0 per risposta № 3

"sed" è il modo più semplice per farlo, ma se hai un requisito un po 'più complesso Puoi anche usare "awk".

In questo caso particolare, crea un file "foo.awk" con il seguente contenuto:

{
if ($0 == "xxxxxx")
exit
else
print $0
}

e dalla shell invoca il seguente comando:

awk -f foo.awk $FILE_NAME