首页 > 解决方案 > 如何删除文件开头或结尾的不常见行?

问题描述

我有两个不同的文件,第一列是常见的,唯一的区别可能是在任何文件的开头或结尾缺少或多余的行。

文件 1

aaa 1
bbb 2
ccc 3
aaa 4
bbb 5
ddd 6
eee 7
fff 8
ggg 9

文件2

bbb 10
ccc 20
aaa 30
bbb 40
ddd 50
eee 60
fff 70
ggg 80
www 90

输出文件

bbb 2 10
ccc 3 20
aaa 4 30
bbb 5 40
ddd 6 50
eee 7 60
fff 8 70
ggg 9 80

我知道如何使用 awk 打印常用行

awk 'NR==FNR{c[$1]++;next};c[$1] > 0' file1 file2

但我需要打印两个文件的公共部分,如 outfile 所示。

标签: bashunixawk

解决方案


如果您可以对文件进行排序,请使用 join 命令。请记住,在 awk 中使用数组效率不高,而且对于大文件,它可能会非常慢。


推荐阅读