【问题标题】:count and print the unique number of strings计算并打印字符串的唯一数量
【发布时间】:2013-05-30 12:20:00
【问题描述】:

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

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 有两个联系。 susan 的 ID 是 156。 Ali 和 anna 的 ID 分别是 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

【问题讨论】:

  • 到目前为止你尝试了什么?
  • ali 294 :- susan 156 1?
  • @perreal ali 已连接到 susan。 no:of 连接是一个(唯一的)。

标签: bash awk


【解决方案1】:

一个简单的猫 ztest.txt |排序-k1,2 | uniq -c 可以解决问题,但是由于您希望对其进行格式化-您可以像这样使用 awk : awk '{ print $2 " :- " $4 " 连接到 " $3 " :- " $5 "-- count: " $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

【讨论】:

  • 它已排序! ,如果你想要一些其他的安排,你可以用 awk 尝试一两件事,我用“philip:- 543 connected to sama:- 22 -- count: 1”检查了它和你的一样。如果您指的是您的行:“susan 156 :- ali 294 anna 67 2”....我没有将代码列出所有其他连接...以为它们只是为了示例,主要任务是获取连接并根据“cat ztest.txt | sort -k1,2 | uniq -c”所做的第一列的唯一匹配进行计数。您还在寻找其他东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 2021-07-27
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多