基于两列在数据文件中查找唯一值

时间:2015-04-22 15:34:49

标签: shell unix ubuntu awk

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

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

我想在第3列中找到所有用户名的所有不同类型的值,例如name1name2name3

如下所示:

name1 1
name2 1
name3 2

如何获得所需的结果?

1 个答案:

答案 0 :(得分: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。)