首页 > 解决方案 > 替换Unix中两个文件之间的列

问题描述

如何将以下 data.fam 文件的第 6 列替换为 .txt 文件的第 3 列。

我的data.fam文件看起来像这样

20481 20481 0 0 2 -9
20483 20483 0 0 1 1
20488 20488 0 0 2 1
20492 20492 0 0 1 1
20493 20493 0 0 1 -9
20498 20498 0 0 2 -9

data.txt文件看起来像这样。

20481   2 1
20488   2 1 
20483   2 1 
20493   1 0 
22822   2 1 
20498  -9 -9
22692   1 0

应该output.fam

20481 20481 0 0 2 1
20483 20483 0 0 1 1
20488 20488 0 0 2 1
20492 20492 0 0 1 0
20493 20493 0 0 1 0
20498 20498 0 0 2 1

我试过awk 'FNR==NR{a[$1]=$2;next}{$6=a[$3]}1' data.txt data.fam >output.fam 但输出没有第 6 列,如下所示。我在哪里做错了?

    20481 20481 0 0 2 
    20483 20483 0 0 1 
    20488 20488 0 0 2 
    20492 20492 0 0 1 
    20493 20493 0 0 1 
    20498 20498 0 0 2 

标签: linuxshellunix

解决方案


推荐阅读