2016-05-19 10 views
0

複数の投稿があることは知っていますが、私が行っているのは、CSVで区切られたファイルから特定の列を抽出することです。 2つのフィールドを合計します。グループに追加のDATE列を追加しますが、その列はMM/DD/YYYY HH:MM:SSで、グループの日付のみを抽出する必要があります。Awk - コンマ区切りファイルから特定の列のデータを抽出して区切ります。

例入力:

Column1,Column2,Column3,Column4,Column5,Column6,Column7,Column8,Column9,Column10 
1/1/2016 9:05:01,O1234,APPLE,10,1.01,AAAA,BBBB,CCCC,DDDD,EEEE 
1/1/2016 10:05:01,O1234,APPLE,5,0.99,AAAA,BBBB,CCCC,DDDD,EEEE 

マイコード:

awk -F',' -v OFS=',' ' 
    (NR!=1) { 
     a[$2","$3","$9","$10]+=$4; 
     b[$2","$3","$9","$10]+=$5; 
     c[$2","$3","$9","$10]+=($4*$5) 
    } 
    END { 
     for(i in a){print i,a[i],b[i],c[i]} 
    } 
' data.txt >aa.txt 

私はこの文を編集する必要があり、私は日にグループをできるように、唯一の2016年1月1日、文字列全体対$ 1 。

awk -F',' -v OFS=',' ' 
    (NR!=1) { 
     a[$1","$2","$3","$9","$10]+=$4; 
     b[$1","$2","$3","$9","$10]+=$5; 
     c[$1","$2","$3","$9","$10]+=($4*$5) 
    } 
    END { 
     for(i in a){print i,a[i],b[i],c[i]} 
    } 
' data.txt >aa.txt 

予想される出力:

1/1/2016,O1234,AAPL,DDDD,EEEE,15,2.00,15.05 
+1

私はコードをフォーマットご協力いただきありがとうございます。私は、予想される出力を含めるように私の質問を編集しました。 – PinkNinja

答えて

1
$ cat tst.awk 
BEGIN { FS=OFS="," } 
NR>1 { 
    sub(/ .*/,"",$1) 
    k = $1 FS $2 FS $3 FS $9 FS $10 
    a[k] += $4 
    b[k] += $5 
    c[k] += ($4*$5) 
} 
END { 
    for (k in a) { 
     print k, a[k], b[k], c[k] 
    } 
} 

$ awk -f tst.awk file 
1/1/2016,O1234,APPLE,DDDD,EEEE,15,2,15.05 
+1

ありがとう、ずっときれいです。 – PinkNinja

関連する問題