计算并打印唯一的字符串数

时间:2013-05-29 12:56:28

标签: bash awk

我有一个文本文件,如下所示。我想计算第一和第二列中每个人的唯一连接数。第三列是第一列人的ID号,第四列是第二列人的ID号。

susan  ali   156  294
susan  ali   156  294
susan  anna  156  67
rex    rex   432  564
rex    rex   432  564
philip sama  543  22

例如,susan与ali和anna有两个连接。苏珊的身份证是156.阿里和安娜的身份证分别是294,67。在输出中,最后一列是每个人的连接数。总连接数是每个人的连接总和。

你的帮助将不胜感激!

输出:

susan  156  :- ali    294  anna  67   2
rex    432  :- rex    564             1
philip 543  :- sama   22              1
ali    294  :- susan  156             1
anna   67   :- susan  156             1
rex    564  :- rex    432             1
sama   22   :- philip 543             1

Total connections:-8

1 个答案:

答案 0 :(得分:0)

一只简单的猫ztest.txt | sort -k1,2 | uniq -c可以解决这个问题,但是因为你想要它的格式化 - 你可以像这样使用awk: awk'{print $ 2“: - ”$ 4“连接到”$ 3“: - ”$ 5“ - 计数:”$ 1}“

完整命令:

$ cat ztest.txt | sort -k1,2 | uniq -c |  awk '{ print $2 " :- " $4 "  connected to " $3 " :- " $5 "-- count: " $1} '

输出:

 philip  :-  543   connected to  sama  :-  22  -- count:  1
 rex    :-  432   connected to  rex  :-  564  -- count:  2
 susan  :-  156   connected to  ali  :-  294  -- count:  2
 susan  :-  156   connected to  anna  :-  67  -- count:  1