想要将基于第一列$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