【问题标题】:join two files on first two columns and print columns from files在前两列加入两个文件并从文件中打印列
【发布时间】:2017-04-16 16:03:06
【问题描述】:

如果我有以下情况:

文件 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 大很多。

【问题讨论】:

    标签: bash unix join awk merge


    【解决方案1】:

    在 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
    

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2018-07-12
      • 2014-03-09
      相关资源
      最近更新 更多