这与问题有关
我有一个这样的文件:
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语法的解释会很棒。
答案 0 :(得分:2)
这在awk中很简单:我们只需要将一个键与第一列和第二列结合使用,其余列为值:
$ 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
答案 1 :(得分:1)
这可能适合你(tac和GNU排序):
tac file | sort -sut, -k1,2