AWK Sum和group by:带标题的输出
我有一个巨大的csv结构(示例): 我感兴趣的是每个工作日的成功事件总数($6)、每个工作日的演示次数($2)以及成功事件的百分比(总和$6/计数$2*100) 我写了以下脚本:AWK Sum和group by:带标题的输出,awk,Awk,我有一个巨大的csv结构(示例): 我感兴趣的是每个工作日的成功事件总数($6)、每个工作日的演示次数($2)以及成功事件的百分比(总和$6/计数$2*100) 我写了以下脚本: #!/bin/awk -f BEGIN {FS = OFS = ","} {if (NR!=1) a[$2]+=$6;count[$2]++$2}END{for (i in a){ print i","a[i] "," count[i]",&q
#!/bin/awk -f
BEGIN {FS = OFS = ","}
{if (NR!=1) a[$2]+=$6;count[$2]++$2}END{for (i in a){ print i","a[i] "," count[i]","a[i]/count[i]*100}}
脚本将运行:
$ awk -f script.awk raw_file.csv > new_file.csv
它工作正常,输出为:
|MONDAY | 2 | 10 |0.20|
|TUESDAY | 18 | 30 |0.60|
|WEDNESDAY | 10 | 20 |0.50|
|THURSDAY | 1 | 20 |0.05|
|FRIDAY | 1 | 15 |0.07|
|SATURDAY | 60 | 100 |0.60|
|SUNDAY | 47 | 80 |0.59|
但是,我想在输出中添加标题(工作日、成功事件、总事件和成功率)。我不知道如何将NR与标题放在同一个脚本中。
我可以通过以下方式显示输出:
awk 'NR==1 {print
"WEEKDAY","SUCCESSFUL_EVENTS","TOTAL_EVENTS","SUCCESSFUL_RATE"}{print
$0}' new_file.csv
但没有办法将其集成到脚本中
非常感谢您的任何建议您可以在脚本的开始部分执行此操作:
#!/bin/awk -f
BEGIN {
FS = OFS = ","
print "WEEKDAY", "SUCCESSFUL_EVENTS", "TOTAL_EVENTS", "SUCCESSFUL_RATE"
}
# ...
单击问题下方的标签,然后单击“了解更多”链接以了解awk的工作原理。一点研究将回答您的问题。您的输入/输出中的每个数据行之间真的有一个空行吗?您还应该将输入/输出作为
-分隔,然后说它是CSV,并将FS和OFS设置为,
-请修复,以便您的问题中的所有内容都使用您使用的分隔符ally在您的数据中有。谢谢Glenn的建议。@EdMorton您好。我是awk和堆栈溢出方面的新手。我将其作为分隔符放置,因为我看到了格式指南。在原始文件中,分隔符是,。仍然对格式不放心,我会更好。谢谢!不确定您在格式指南中看到了什么,但不管您作为sam提供了什么问题中的ple输入/输出是我们可以复制/粘贴以测试潜在解决方案的内容,因此,千万不要调整它以使其以任何方式看起来更好,因为这样您就可能最终得到一个您没有的问题的解决方案!只需将示例输入、预期输出和代码缩进4个空格,或在每个空格前后加3个勾号即可就这些了。谢谢。一切如期进行。
#!/bin/awk -f
BEGIN {
FS = OFS = ","
print "WEEKDAY", "SUCCESSFUL_EVENTS", "TOTAL_EVENTS", "SUCCESSFUL_RATE"
}
# ...