尝试在 Linux 命令行中执行此操作。想要合并两个文件,根据 ID 比较值,但只保留具有较新/较大日期值的 ID(编辑:等于或大于)。由于 ID 456604 位于两个文件中,因此只想保留文件 2 中日期较新的 ID:“20111015 456604 tgf”
文件1
Date ID Note
20101009 456604 abc
20101009 444444 abc
20101009 555555 abc
20101009 666666 xyz
文件2
Date ID Note
20111015 111111 abc
20111015 222222 abc
20111015 333333 xyz
20111015 456604 tgf
然后输出将两个文件合并,但仅保留第二个 ID 值和较新的日期。行的顺序并不重要,只是概念输出的示例。
输出
Date ID Note
20101009 444444 abc
20101009 555555 abc
20101009 666666 xyz
20111015 111111 abc
20111015 222222 abc
20111015 333333 xyz
20111015 456604 tgf
最佳答案
$ cat file1.txt file2.txt | sort -ru | awk '!($2 in seen) { print; seen[$2] }'
Date ID Note
20111015 456604 tgf
20111015 333333 xyz
20111015 222222 abc
20111015 111111 abc
20101009 666666 xyz
20101009 555555 abc
20101009 444444 abc
按日期降序对合并的文件进行排序,并且仅在第一次看到 ID 时打印一行。
编辑
更紧凑的版本,感谢史蒂夫:
cat file1.txt file2.txt | sort -ru | awk '!seen[$2]++'
关于linux - 比较一个字段,如果另一字段的值更大,则删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27697755/