簡體   English   中英

Gawk和列

[英]Gawk distinct and sum column

我對linux和awk的使用非常陌生,無法找到以下問題的答案:

我想使用awk,文件結構如下:

Date ID Size
2016-11-09 688 47
2016-11-09 688 56
2016-11-09 31640 55

現在,我想總結具有日期和ID的每行的大小,並將其導出到.csv文件。 該文件應如下所示:

Date,ID,Size
2016-11-09,688,103
2016-11-09,31640 55

我真的需要您的幫助,因為我無法自行解決,謝謝。

如果您的輸入確實按照示例中的日期和ID進行排序,則應使用以下代碼:

$ cat tst.awk
BEGIN { OFS="," }
NR==1 { $1=$1; print; next }
{ curr = $1 OFS $2 }
(curr != prev) && (NR > 2) { print prev, sum; sum=0 }
{ prev = curr; sum += $3 }
END { print prev, sum }

$ awk -f tst.awk file
Date,ID,Size
2016-11-09,688,103
2016-11-09,31640,55

而不是將整個文件保存在內存中。 請注意,此方法也將以與輸入相同的順序產生輸出,而END節中for .. in ..循環中的任何for .. in ..都將以隨機(哈希)順序打印輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM