2016-11-27 36 views
0

我有一个文本文件相隔2场:如何使用UNIX计数命令

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

字段1总是uniq的但不是现场2它可以重复。我如何识别第一场,第二场第三场等场次2的发生?我可以使用计数吗?

感谢

回答

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是一门很棒的小语言,仍然非常值得学习。

+0

感谢,这是非常有帮助 – user7011225

0

您可以将sort命令与-u参数一起使用。这种方式删除了冗余行。

sort -u filename.txt 

如果你想指望出现

sort -u filename.txt | wc -l