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