过滤文本文件以根据第3列中的值获得唯一条目



我知道一点bash,但是我面临的问题要过滤文件。我将以一个例子解释:

给定一个文本文件如下(file1):

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib53 Avenger goodone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice
11.10.12 bib54 TheAmazingSpiderMan nice
11.10.12 bib01 Avenger goodone
12.10.12 bib29 Avenger goodone
12.10.12 bib11 TheAmazingSpiderMan nice
12.10.12 bib03 Ice_Age wow
12.10.12 bib98 Ice_Age wow
14.10.12 bib12 Ice_Age wow

这是我想要的结果(file2):

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice

所以我的问题是:我使用哪个命令来获得此结果(File2)?(即电影的第一个入门,而不是考虑列/字段1、2和4)。

我希望它足够清楚。

这是使用awk

的一种方法
awk '!a[$3]++' file.txt

结果:

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice

尝试做是:

sort -u -k3 file.txt

输出

10.10.12 bib24 Avenger goodone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice
10.10.12 bib21 The_Dark_Knight_Rises betterone

用于生锈的CSH用户:

使用此:

awk '{c[$3]++} {if (c[$3] == 1) print $0}' file.txt

因为有了原始答案,它将出错"找不到事件"(也可以使"也可以使"!

相关内容

  • 没有找到相关文章