4

我知道一点 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)。

我希望它足够清楚。

4

3 回答 3

5

这是一种使用方法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
于 2012-10-18T13:50:28.463 回答
4

尝试做的是:

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
于 2012-10-18T13:43:20.937 回答
0

对于生锈的 csh 用户:

用这个:

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

因为有了原始答案,它会报错“未找到事件”(也可以使“!”正常字符!但这更易于阅读和使用)

于 2014-02-24T10:37:32.247 回答