【问题标题】:How to compare columns from different files and replace the value in one column?如何比较来自不同文件的列并替换一列中的值?
【发布时间】:2019-05-25 04:23:06
【问题描述】:

我有两个文件:

输入1

22 rs145072688 14431347  C  G 0.3418 0.648 0.830 0.516 0.506 0.497 0.785 0.586
22   rs201725126 14432618  G  A 0.8119 1.571 1.748 1.661 1.384 1.374 1.614 1.718
22   rs200579949 14433624  G  A 0.8598 1.590 1.669 1.763 1.754 1.832 1.627 1.250
22   rs75454623 14433659  C  A 0.7888 1.564 1.606 1.667 1.355 1.619 1.692 1.775
22   rs199856693 14433758  G  A 0.9354 1.807 1.936 1.906 1.847 1.929 1.734 1.327
22  rs9604721 14434713  C  T 0.9723 1.984 1.984 1.984 1.984 1.984 1.878 1.412

输入2

rs145072688:10352:T:TA rs145072688
rs201725126:13116:T:G rs201725126
rs200579949:13118:A:G rs200579949
rs75454623:14930:A:G rs75454623
rs199856693:14933:G:A rs199856693

想要的输出:

22 rs145072688:10352:T:TA 14431347  C  G 0.3418 0.648 0.830 0.516 0.506 0.497 0.785 0.586
22   rs201725126:13116:T:G 14432618  G  A 0.8119 1.571 1.748 1.661 1.384 1.374 1.614 1.718
22   rs200579949:13118:A:G 14433624  G  A 0.8598 1.590 1.669 1.763 1.754 1.832 1.627 1.250
22   rs75454623:14930:A:G 14433659  C  A 0.7888 1.564 1.606 1.667 1.355 1.619 1.692 1.775
22   rs199856693:14933:G:A 14433758  G  A 0.9354 1.807 1.936 1.906 1.847 1.929 1.734 1.327
22  rs9604721 14434713  C  T 0.9723 1.984 1.984 1.984 1.984 1.984 1.878 1.412

因此,如果两个文件的第 2 列匹配,我想将文件 input1 中第 2 列中的值替换为 input2 中第 1 列中的值。

我试过了:

awk 'FNR==NR{a[$1]=$2;next} $2 in a{$2=a[$1]}1' input2 input1

还有这个

awk 'FNR==NR { F2[$2]=$2 ; next } $2 in F2 {$1 = F2[$1] ; print } ' input2 input1

【问题讨论】:

    标签: linux awk


    【解决方案1】:

    您的第一次尝试几乎是正确的。

    awk '
        FNR==NR { a[$2]=$1; next }
        $2 in a { $2=a[$2] }
        1
    ' input2 input1
    
    • $2 in a 在 a 的键中查找 $2,而不是在其值中
    • 所以将第 2 列存储为值而不是 a 的键
    • 在第二行操作中,您应该参考第二列(输入 1)而不是第一列(输入 2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2021-11-17
      • 2022-11-16
      • 1970-01-01
      • 2021-04-07
      • 2021-09-01
      相关资源
      最近更新 更多