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

时间:2015-11-25 18:19:09

标签: replace awk

我有两个文件
文件1:

[/tmp/mednotes8910030368496690883]> egrep -o ".{20}\"\? 5\" .{20}" results.edn 
oothbrush for" 160, "? 5" 32, ". ) during his 
t with sutures" 32, "? 5" 352, "4.81 pounds" 1
"being up all" 32, "? 5" 32, "limited financi
everytime she" 32, "? 5" 32, "had a partial m

文件2:

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

我尝试了以下awk选项..但我只更换了第6列中的第一行。

2   0
2   0
3   0
2   0
2   0
3   0
2   0
2   0
3   0
3   0
3   0

如何将File1中的第6列替换为File2中的第1列?

2 个答案:

答案 0 :(得分:4)

您可以使用以下代码 -

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/>

当我尝试在线模拟器时

答案 1 :(得分:2)

替代解决方案

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