将file1中的id替换为file2中的id

时间:2019-01-03 15:48:38

标签: awk sed fasta

我有两个文本文件,我想用file2替换id。这两个文件中的所有ID的顺序相同。

File1
>12_abc
ghfghfjgfhjgfjf
hgfjfgjgfjfgjgfjf
>13_def
ghfghgfgfgfghfjhf
nmbnmbhjgkjgjhggh
>14_ghi
uytghhuytuytuytuyt
ytrftyfrghfhgfgfgg

File2
>12_abc|10
>13_def|20
>14_ghi|30

Desired Output
>12_abc|10
ghfghfjgfhjgfjf
hgfjfgjgfjfgjgfjf
>13_def|20
ghfghgfgfgfghfjhf
nmbnmbhjgkjgjhggh
>14_ghi|30
uytghhuytuytuytuyt
ytrftyfrghfhgfgfgg

awk '{print} !(NR%2) {if ((getline < "File2.txt") > -1) print}' File1

1 个答案:

答案 0 :(得分:2)

作为FASTA文件,这看起来很尴尬。这就是我的方法:

如果要按顺序替换名称:

awk '(NR==FNR){a[FNR]=$0;next}/^>/{print a[++c]; next}1' File2 File1 > File1.new

如果要根据内容替换名称:

awk -F '|' '(NR==FNR){a[$1]=$0;next}/^>/{print a[$0]; next}1' File2 File1 > File1.new