GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovere le righe di intestazione extra dal file, ad eccezione della prima riga?

Ho un file che assomiglia a questo esempio di giocattolo. Il mio file attuale ha 4 milioni di righe, di cui circa 10 devo eliminare.

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
ID  Data1  Data2
4    100    100
ID  Data1  Data2
5    200    200

Voglio eliminare le righe che assomigliano all'intestazione, ad eccezione della prima riga.

File finale:

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
4    100    100
5    200    200

Come posso farlo?

Risposta accettata:

header=$(head -n 1 input)
(printf "%sn" "$header";
 grep -vFxe "$header" input
) > output
  1. prendere la riga di intestazione dal file di input in una variabile
  2. stampa l'intestazione
  3. elabora il file con grep per omettere le righe che corrispondono all'intestazione
  4. cattura l'output dei due passaggi precedenti nel file di output

Linux
  1. Come scorrere le righe di un file?

  2. Concatenare le linee in base al primo carattere della riga successiva?

  3. Script Bash per rimuovere il file più vecchio da una cartella?

  4. Mantenere solo la prima riga da ogni sequenza di righe consecutive che corrispondono a uno schema?

  5. Come rimuovere la Bom da un file Utf-8?

Come rimuovere le righe da un file usando il comando Sed

Rimuovere in modo efficiente le prime due righe da un file di testo?

Stampa l'ultima riga di un file, dalla CLI

Come rimuovere le linee che appaiono sul file B da un altro file A?

Rimuove le prime N righe da un file di registro attivo

Script Bash per rimuovere il file più vecchio da una cartella