sort,uniq和put数字出现在右边

时间:2018-03-29 07:00:48

标签: bash

我有多个文件,每行都有一个字符串。例如:

abc
cde
abc
efg

我想计算每个字符串的出现次数。我知道如何使用以下代码:

cat * | sort | uniq -c | sort -nr

但它打印:

    2 abc
    1 cde
    1 efg

如何删除入门空间并将数字移动到字符串的右侧,如下所示:

abc,2
cde,1
efg,1

4 个答案:

答案 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