2016-04-10 11 views
0

Ich habe circa 400 CSV-Dateien wird eine große Menge an Daten, die in ihnen in folgendem Format:bash Einsatz zusätzliche Header und Daten

As at Date,3/12/2014 
Header1,Header2,Header3... 
Data1,Data2,Data3... 

Ich will eine neue Spalte (mit einem Header) hinzufügen bei das Ende der Zeile mit den Headern und das Datum, das in der ersten Zeile auf jeder Zeile angezeigt wird. Ein Beispiel dafür wäre:

As at Date,3/12/2014 
Header1,Header2,Header3,Date 
Data1,Data2,Data3,3/12/2014 
Data4,Data5,Data6,3/12/2014 
... 
... 

Ich weiß, dass ich die Details aus der ersten Reihe greifen mit:

head -q -n 1 *.csv 

Und ich weiß, dass ich sed verwenden kann einen Header in die CSV-Datei Einsatz aber ich bin mir nicht sicher, wie ich das alles kombinieren soll.

Jede Hilfe würde sehr geschätzt werden.

+0

Bitte schauen Sie sich [editing-help] (http://stackoverflow.com/editing-help) an. – Cyrus

Antwort

0

I für dieses

awk ' 
    BEGIN {FS = OFS = ","} 
    NR == 1 {d = $2} 
    NR == 2 {$(NF+1) = "Date"} 
    NR > 2 {$(NF+1) = d} 
    {print} 
' file 

verwenden würde, die "one-liner" ed zu

sein kann
awk -F, -vOFS=, 'NR==1{d=$2};NR==2{$(NF+1)="Date"};NR>2{$(NF+1)=d};1' file 

Wenn Sie nur bash möchten, verwenden Sie

{ 
    IFS=, read -r asat date; echo "$asat,$date" 
    IFS= read -r line; echo "$line,Date" 
    while IFS= read -r line; do echo "$line,$date"; done 
} < file 
0

Andere awk Lösung:

awk -F, '{ 
    if (FNR==1) { 
     mydate=$2 
     print 
    } else { 
     print $0 "," mydate 
    } 
    } ' file.csv 
Verwandte Themen