更改 UNIQ -C 输出的简单方法



>我有一个简单的文件,如下所示:

术语 1 列2 列 3
术语 2 列2 列 3
术语 3 列 2 列 3
术语 2 列2 列 3
术语 1 列2 列 3
术语 2 列2 列 3

如果我对第一列进行排序并得到术语的计数:

cut -f1 -d ' ' file | sort | uniq -c

结果显示:

    2 学期1
    3 学期2
    1 学期3

但我宁愿看到这个:

第一学期 2
第二学期 3
第三学期 1

有没有一种简单的方法可以"更改"uniq输出来执行此操作,或者我仍然需要将输出通过管道传输到sed或awk才能获得此输出?

这似乎是一个简单的问题,所以如果之前有人问过这个问题,我深表歉意。

Uniq没有提供重新排列输出的选项。

您可以使用awk执行此操作:

cut -f1 -d ' ' file | sort | uniq -c | awk '{print $2, $1}'
Term1 2
Term2 3
Term3 1

或者使用awk然后排序(推荐)

$awk '{a[$1]++} END{for (i in a) print i,a[i] }' file | sort -k1
Term1 2
Term2 3
Term3 1

使用GNU数据粉碎工具的最短工具:

datamash -Ws -g1 count 1 <file

输出:

Term1   2
Term2   3
Term3   1

最新更新