我有多个文件,每行都有一个字符串。例如:
abc
cde
abc
efg
我想计算每个字符串的出现次数。我知道如何使用以下代码:
cat * | sort | uniq -c | sort -nr
但它打印:
2 abc
1 cde
1 efg
如何删除入门空间并将数字移动到字符串的右侧,如下所示:
abc,2
cde,1
efg,1
答案 0 :(得分:2)
只需将输出传递给以下awk:
... | awk '{print $2 "," $1}'
$ 1和$ 2分别代表第一列和第二列。空间连接参数。
答案 1 :(得分:0)
您还可以使用awk命令:
awk -F"," '{file[$1]++} END{for(i in file){print i","file[i]}}' <filename> | sort
这是通用命令
答案 2 :(得分:0)
您可以使用单个awk
。
awk '{a[$1]++} END{for(i in a){print i","a[i] | "sort"}}' Input_file
答案 3 :(得分:0)
使用GNU awk并控制阵列扫描顺序对数据进行排序:
$ awk '
{ a[$0]++ } # hash to a counting instances
END { # after processing records
OFS="," # ser output field separator
PROCINFO["sorted_in"]="@ind_str_asc" # set desired array scanning order
for(i in a) # ... for for
print i,a[i] # output
}' file
abc,2
cde,1
efg,1