我有一个文本文件,两个字段分隔为:
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的第一个,第二个第三个等?我可以使用伯爵吗?
由于
答案 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