Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWK Sum和group by:带标题的输出_Awk - Fatal编程技术网

AWK Sum和group by:带标题的输出

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

我有一个巨大的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]","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"
}
#  ...