Bash 计算并打印唯一数量的字符串
我有一个文本文件,如下所示。我想在第一列和第二列中计算每个人的唯一连接数。第三列为第一列人员的身份证号码,第四列为第二列人员的身份证号码Bash 计算并打印唯一数量的字符串,bash,awk,Bash,Awk,我有一个文本文件,如下所示。我想在第一列和第二列中计算每个人的唯一连接数。第三列为第一列人员的身份证号码,第四列为第二列人员的身份证号码 susan ali 156 294 susan ali 156 294 susan anna 156 67 rex rex 432 564 rex rex 432 564 philip sama 543 22 例如,苏珊与阿里和安娜有两个关系。苏珊的身份证是156。阿里和安娜的身份证分别是294和67。在输出
susan ali 156 294
susan ali 156 294
susan anna 156 67
rex rex 432 564
rex rex 432 564
philip sama 543 22
例如,苏珊与阿里和安娜有两个关系。苏珊的身份证是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
一个简单的cat 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
到目前为止你尝试了什么?
ali 294:-susan 156 1
?@perreal ali已连接到susan。否:连接的个数为一(唯一)。已排序,如果你想要一些其他的安排,你可以试着用awk做一两件事,我用“philip:-543连接到sama:-22——计数:1”检查过,它和你的一样。如果你指的是你的台词:“苏珊156:-阿里294安娜67 2”。。。。我没有把代码列出所有其他连接。。。虽然它们只是示例,但主要任务是根据第一列的唯一匹配获取连接和计数,而“cat ztest.txt | sort-k1,2 | uniq-c”就是这样做的。你在找别的东西吗?