Devo unire più file CSV con le stesse intestazioni. Devo mantenere l'intestazione del primo file e rimuovere le intestazioni di tutti gli altri file e unirli e creare un file master.Unix: unire più file CSV con la stessa intestazione mantenendo l'intestazione del primo file
file di 1:
Id,city,name ,location
1,NA,JACK,CA
file di 2:
ID,city,name,location
2,NY,JERRY,NY
uscita:
Id,city,name,location
1,NA,JACK,CA
2,NY,JERRY,NY
Attualmente sto usando questo codice:
ls *.csv | xargs -n 1 tail -n+2 > master.csv
Questo codice fonderà perfettamente i file, ma poiché ho bisogno dell'intestazione del primo file, questo non mi darà l'intestazione.
Cosa devo fare?
grazie mille. Funziona bene. – user2376510
Spiegazione: FNR è il numero di righe (record) letti finora nel file corrente. NR è il numero di righe letto in generale. Quindi la condizione 'FNR == 1 && NR! = 1 {next;}' dice, "Salta questa riga se è la prima riga del file corrente e almeno 1 riga è stata letta nel suo complesso." Questo ha l'effetto di stampare l'intestazione CSV del primo file mentre lo si ignora nel resto. –
Per i noob come me ... Ho aggiunto il '> master.csv' alla fine per creare il nuovo file con tutti i dati invece di eseguire il CLI –