【问题标题】:compare two columns in two files "awk"比较两个文件“awk”中的两列
【发布时间】:2017-03-09 23:55:55
【问题描述】:

我想比较 awk 中 $1,$2 列的两个文件。如果相同,则从第二个文件全部打印,如果不同,则从第一个文件全部打印。

第一个文件:

1 2

b 2 3

c 3 4

第二个文件:

a 1 2 ko lo to

b 2 3 to ho ro

结果:

a 1 2 ko lo to

b 2 3 to ho ro

c 3 4

所以我想从第一个文件中添加与第二个文件不匹配的行。

我写道:

 awk -v OFS="\t" 'FNR==NR{a[$1]=$2=$3;next} {if (($1,$2) in a) print a[$1,$2,$3]; else print $0}'

但它不起作用:-( 谢谢。

【问题讨论】:

    标签: awk merge compare


    【解决方案1】:

    awk 来救援!

    $ awk '!a[$1,$2]++' file2 file1
    
    a 1 2 ko lo to
    b 2 3 to ho ro
    c 3 4
    

    这不会保留顺序(它会首先打印 file2 的内容)。另一种选择是

    $ awk    '{k=$1 FS $2} 
      NR==FNR {a[k]=$0; next} 
              {print (k in a?a[k]:$0)}' file2 file1
    

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 2015-10-22
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2017-01-31
      相关资源
      最近更新 更多