我知道一点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)。
我希望它足够清楚。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
对于生锈的csh用户:
使用此:
awk '{c[$3]++} {if (c[$3] == 1) print $0}' file.txt
因为有了原始答案,所以会发生错误“未找到事件”(也可以使“!”正常字符!但这更容易阅读和使用)