我在终端中有一个 awk 脚本,它执行一些计数功能:
awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'
Data_1
我计划输出为 csv 文件,其中添加
awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'
Data_1 > Count.csv
但我现在面临的问题是,上面的 awk 脚本输出
Gregor 4
Alexis 15
George 17
输出为csv文件后,名称和计数仅附加到excel中的一列A中。我如何在终端中格式化 csv 命令以指定一列中的名称和另一列中的数字?在Excel中我想获得
A B
Gregor 4
Alexis 15
George 17
答案1
.csv
当您使用 with 时,您需要在字段之间添加逗号以具有简单的类型格式printf
。
awk '{ a[$2]++ }END{ for(i in a) printf "%-15s,%s\n",i,a[i] }'
Gregor ,4
Alexis ,15
George ,17
或成熟的 .csv 类型
awk '{ a[$2]++ }END{ for(i in a) printf "\"%-15s\",\"%s\"\n",i,a[i] }'
"Gregor ","4"
"Alexis ","15"
"George ","17"
但您可以使用(simple .csv)来print
代替并添加awk
逗号。OFS
awk '{ a[$2]++ }END{ for(i in a) print i,a[i] }' OFS=,
Gregor,4
Alexis,15
George,17
或者只是在字段本身中打印它。
awk '{ a[$2]++ }END{ for(i in a) print i","a[i] }'
Gregor,4
Alexis,15
George,17
对于成熟的 .csv 格式。
awk '{ a[$2]++ }END{ for(i in a) print "\""i"\",\""a[i]"\"" }'
"Gregor","4"
"Alexis","15"
"George","17"