Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 计算并打印唯一数量的字符串_Bash_Awk - Fatal编程技术网

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”就是这样做的。你在找别的东西吗?