2013-05-29 26 views
0

我有一个文本文件,如下所示。我想计算第一列和第二列中每个人的唯一连接数。第三列是第一列人的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 
+3

什么你尝试这么远吗? – devnull

+0

'阿里294: - 苏珊156 1'? – perreal

+0

@perreal ali连接到苏珊。否:连接是一个(唯一的)。 – user2416563

回答

0

一个简单的猫ztest.txt | sort -k1,2 | awk'{print $ 2': - “$ 4”连接到“$ 3”: - “$ 5” - count:“$ 1} uniq -c可以做到这一点,但是由于您希望将其格式化 - 您可以使用awk: “

完整的命令:

$ 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 
+0

感谢您的代码。你的输出是不同的。 – user2416563

+0

其排序! ,如果你想要一些其他的安排,你可以用awk尝试一两件事,我用“philip: - 543连接到sama: - 22 - count:1”来检查它与你的一样。如果你是在引用你的行:“苏珊156: - 阿里294安娜67 2”....我没有把代码列出所有其他连接......认为他们只是为了这个例子,主要任务是获得连接并根据“cat ztest.txt | sort -k1,2 | uniq -c”所做的第一个coloumn的唯一匹配进行计数。你在找别的东西吗? – nsd