2

这与问题有关

我有一个这样的文件:

FOO,BAR,100,200,300
BAZ,TAZ,500,600,800
FOO,BAR,900,1000,1000
HERE,THERE,1000,200,100
FOO,BAR,100,10000,200
BAZ,TAZ,100,40,500

重复项由前两个字段确定。此外,更“最近”的记录(文件中较低的/较高的行号)是应该保留的记录。

将输出的 awk 脚本是什么:

BAZ,TAZ,100,40,500
FOO,BAR,100,10000,200
HERE,THERE,1000,200,100

输出顺序不是那么重要。

awk 语法的解释会很棒。

4

2 回答 2

2

中很容易:我们只需要输入一个带有键的数组,该键与第一列和第二列相结合,其余的作为值:

$ awk -F, '{a[$1","$2]=$3","$4","$5}END{for(i in a)print i,a[i]}' OFS=, file.txt
BAZ,TAZ,100,40,500
HERE,THERE,1000,200,100
FOO,BAR,100,10000,200
于 2013-04-05T22:27:36.687 回答
1

这可能对您有用(tac 和 GNU 排序):

tac file | sort -sut, -k1,2
于 2013-04-06T17:27:17.010 回答