想要將基於第一列$1
的行合併到行中並格式化輸出。在打印標題時需要生成Max Unique count of first field.
例如,安哥拉出現count = 3,巴西出現count = 5,贊比亞出現count = 1。 字段$ 1的最大唯一計數爲5,因此需要打印標題5次才能爲所有字段設置適當的標題。awk根據列合併行
雖然打印輸出,想保留original input file
一行訂單。 曾經是我的實際輸入文件變化等10個字段,12個字段等
Input.csv
Country,Network,Details,Amount
Angola,voda,xxx,10
Angola,at&t,xxx,20
Angola,mtn,xxx,30
Brazil,voda,yyy,40
Brazil,voda,yyy,50
Brazil,at&t,yyy,60
Brazil,mtn,yyy,70
Brazil,voda,yyy,80
Zambia,tcl,zzz,90
期望Output.csv
Country,Network,Details,Amount,Country,Network,Details,Amount,Country,Network,Details,Amount,Country,Network,Details,Amount,Country,Network,Details,Amount
Angola,voda,xxx,10,Angola,at&t,xxx,20,Angola,mtn,xxx,30
Brazil,voda,yyy,40,Brazil,voda,yyy,50,Brazil,at&t,yyy,60,Brazil,mtn,yyy,70,Brazil,voda,yyy,80
Zambia,tcl,zzz,90
目前,我使用下面2命令來獲取所需的輸出,並根據實際輸入文件中的字段數量手動更改計數。
步驟:#1
awk 'BEGIN { while (count++<5) header=header "Country,Network,Details,Amount,"; print header }' > output.csv
步驟:#2
awk -F, '
/.+/{
if (!($1 in Val)) { Key[++i] = $1; }
Val[$1] = Val[$1] $0 ",";
}
END{
for (j = 1; j <= i; j++) {
print(Val[Key[j]]);
}
}' input.csv >> output.csv
尋找你的建議...
你可以保持像'ORDERNUM [$ 1]數組++'並補充說,作爲外環帶動您的最終打印語句,但爲什麼不直接使用'的awk「{現有PROG}」 |排序「(因爲你的輸入數據似乎是按國名排序)?祝你好運。 – shellter
而且......用一個寫得很好的Q加上小樣本數據,需要的輸出和......喘氣,一些非常接近的代碼!繼續發帖,祝你好運! – shellter