Replace Awk:将一个文件中的列替换为另一个文件中的列

Replace Awk:将一个文件中的列替换为另一个文件中的列,replace,awk,Replace,Awk,我有两个文件文件1: AAAAA01 T1 0 0 0 0 C C G G G AAAAA02 T1 0 0 0 0 C C G G G AAAAA03 T1 0 0 0 0 C C G G G AAAAA04 T1 0 0 0 0 C C G G G AAAAA05 T1 0 0 0 0 C C G G G AAAAA06 T

我有两个文件
文件1:

AAAAA01 T1  0   0   0   0   C   C   G   G   G
AAAAA02 T1  0   0   0   0   C   C   G   G   G
AAAAA03 T1  0   0   0   0   C   C   G   G   G
AAAAA04 T1  0   0   0   0   C   C   G   G   G
AAAAA05 T1  0   0   0   0   C   C   G   G   G
AAAAA06 T1  0   0   0   0   C   C   G   G   G
AAAAA07 T1  0   0   0   0   C   C   G   G   G
AAAAA08 T1  0   0   0   0   C   C   G   G   G
AAAAA09 T1  0   0   0   0   C   C   G   G   G
AAAAA10 T2  0   0   0   0   C   C   G   G   G
AAAAA11 T2  0   0   0   0   C   C   G   G   G
文件2:

2   0
2   0
3   0
2   0
2   0
3   0
2   0
2   0
3   0
3   0
3   0
我尝试了以下awk选项。。但我只替换了第6列的第一行

awk 'BEGIN { OFS = FS } FNR==NR{a[NR]=$1;next}{$6=a[FNR]}1' File2.txt File1.txt > out1.txt

awk 'BEGIN {OFS = FS} NR == FNR {a[FNR] = $B; next} $A = a[FNR]' B=1 A=6 File2.txt File1.txt > out1.txt

如何将文件1中的第6列替换为文件2中的第1列

您可以使用下面的一段代码-

awk 'FNR==NR{a[NR]=$1;next}{$6=a[FNR]}1' File2.txt File1.txt > output.txt
这是给我完美的输出如下

AAAAA01 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA02 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA03 T1 0 0 0 3 C C G G G<br/>                                                                                                                                               
AAAAA04 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA05 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA06 T1 0 0 0 3 C C G G G<br/>                                                                                                                                               
AAAAA07 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA08 T1 0 0 0 2 C C G G G<br/>                                                                                                                                               
AAAAA09 T1 0 0 0 3 C C G G G<br/>                                                                                                                                               
AAAAA10 T2 0 0 0 3 C C G G G<br/>                                                                                                                                               
AAAAA11 T2 0 0 0 3 C C G G G<br/>
AAAAA01 T1 0 0 0 2 C G
AAAAA 02 T1 0 0 0 2 C C G
AAAAA03 T1 0 0 0 3 C C G
AAAAA04 T1 0 0 0 2 C C G
AAAAA05 T1 0 0 0 2 C C G
AAAAA06 T1 0 0 0 3 C C G
AAAAA07 T1 0 0 0 2 C C G
AAAAA 08 T1 0 0 0 2 C C G
AAAAA09 T1 0 0 0 3 C C G
AAAAA10 t20 0 0 3 C C G
aaaa11 t20 0 0 3 C C G
当我尝试在线仿真器时

替代解决方案

awk '{$6=$(NF-1); $(NF-1)=$NF=""}1' <(paste file1 file2)

awk'{$6=$(NF-1);$(NF-1)=$NF=”“}1'谢谢你,Murli,我尝试了你的代码(实际上这是我在谷歌搜索其他技巧之前的第一次尝试),但我只替换了第6列的第一行,不是整个专栏。@Molly_K我只是在一个在线仿真器上试过这个,因为我目前没有运行linux box,而且它运行得很好,我已经用输出更新了答案。Murli,非常感谢。我同意这在在线模拟器上非常有效。我下载了你的file1 file2和bash文件,并在我的终端上运行。。奇怪的是,我得到了同样的东西!只替换了第6列的第一行。真烦人。我会在服务器上再次测试。谢谢。我测试了代码,得到了一个以空格分隔的文件,其中第6列没有被替换,第1列以不规则的方式添加到文件2中。e、 g.将第一行的第7列添加到文件2中,其余信息与文件1中的第1列和第2列一起添加到文件末尾。您可能对行分隔符有问题。我也这么认为。。我刚刚用vi编辑器打开了文件。。。原来我的文件没有正确地分开。非常感谢您抽出时间。我很感激。实际上,在我使用perl脚本确保换行符正确后,这两个代码都起作用了。感谢@karakfa和Murli。如果你认为我们的答案有用的话。你能接受其中任何一个吗!当然对不起,我之前没看到。