我如何使用unix count命令

时间:2016-11-27 08:44:47

标签: unix

我有一个文本文件,两个字段分隔为:

i3583063:b3587412
i3583064:b3587412
i3583065:b3587412
i3583076:b3587421
i3583077:b3587421
i3583787:b3587954
i3584458:b3588416
i3584459:b3588416
i3584460:b3588416
i3584461:b3588416
i3584462:b3588416
i3584463:b3588416
i3584464:b3588416
i3584465:b3588416

字段1始终是uniq但不是字段2可以重复。如何识别字段2的第一个,第二个第三个等?我可以使用伯爵吗?

由于

2 个答案:

答案 0 :(得分:1)

我不知道我是否听说过标准的Unix count实用程序,但您可以使用Awk执行此操作。这是一个将计数添加为第三列的Awk脚本:

awk -F: 'BEGIN {OFS=":"} {$3=++count[$2]; print}' input.txt

它应该生成输出:

i3583063:b3587412:1
i3583064:b3587412:2
i3583065:b3587412:3
i3583076:b3587421:1
i3583077:b3587421:2
i3583787:b3587954:1
i3584458:b3588416:1
i3584459:b3588416:2
i3584460:b3588416:3
i3584461:b3588416:4
i3584462:b3588416:5
i3584463:b3588416:6
i3584464:b3588416:7
i3584465:b3588416:8

脚本{$3=++count[$2]; print}的核心只是增加一个由第二个字段的值索引的计数器,将其存储在新的第三个字段中,然后使用这个新字段输出该行。 Awk是一种很棒的小语言,值得学习。

答案 1 :(得分:0)

您可以将sort命令与-u参数一起使用。这样就可以删除多余的行。

sort -u filename.txt

如果要计算出现次数

sort -u filename.txt | wc -l