【问题标题】:Finding unique values in a data file based on two columns [duplicate]基于两列在数据文件中查找唯一值[重复]
【发布时间】:2015-06-30 09:28:15
【问题描述】:

我在 Unix 中有一个这样的文件

name1 text text 123432re text
name2 text text 12344qp text
name3 text text1 134234ts text
name3 text text2 134234ts text

我想在第三列中为所有用户名找到所有不同类型的值,比如说name1name2name3

如下:

name1 1
name2 1
name3 2

我怎样才能得到所需的结果?

【问题讨论】:

  • 这已经被问过很多次了,它是非常基本的awk。到目前为止,您尝试过什么?

标签: shell unix ubuntu awk


【解决方案1】:

如果第4列之前的列中的文本不能包含空格,则应使用gawk进行以下操作:

gawk '{++vals[$1][$3];}
  END {for (u in vals) {
       c = 0;
       for (t in vals[u]) { ++c; };
       print u" "c;}
}' yourfile

(注意,gawk 支持多维数组,而标准 awk 不支持,因此相同的解决方案不适用于标准 awk。)

【讨论】:

  • 猫奖没用!另外,awk 不支持 2D 数组,所以这不起作用。
  • @Tom Fenech 谢谢,我的错误。我没有注意到该问题仅被标记为标准 awk 问题。不过,笨拙的解决方案也可能会有所帮助。
  • @lp_ 非常感谢。你的傻瓜已经解决了我的要求。再次非常非常感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 2016-12-23
  • 2011-08-28
  • 1970-01-01
  • 2014-11-09
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多