在前两列上连接两个文件并从文件中打印列

时间:2016-12-01 21:09:56

标签: bash unix join awk merge

如果我有以下内容:

档案1

1 a qpqp
2 b qpqp
3 c qpqp

文件2

1 a xkcd
2 b xkcd
3 d xkcd

我想加入第1列和第2列匹配的两个文件,然后并排打印输出。即。

1 a qpqp 1 a xkcd
2 b qpqp 2 b xkcd

我可以使用

打印第一个文件列
awk 'NR==FNR{a[$1,$2]=$3;next} ($1,$2) in a{print $0, a[$1,$2]}' file1.txt file2.txt

但正如我所提到的,我想打印两个表中的列。谢谢!

extra info - 文件不会事先排序(花费太长时间),文件2比文件1大。

1 个答案:

答案 0 :(得分:2)

在awk中:

$ awk 'NR==FNR{a[$1 FS $2]=$0;next} (($1 FS $2) in a) {print a[$1 FS $2],$0}' file1 file2
1 a qpqp 1 a xkcd
2 b qpqp 2 b xkcd