使用其他文件中的相同单词替换字符串

使用其他文件中的相同单词替换字符串

我正在编辑我的1.txt文件,找到一个单词并将其替换为相应的单词,2.txt并添加2.txt.

我有兴趣维护我的文件的顺序1.txt

>title1
ID1 .... rest of string I'm not interested in
>title2
ID2 .... rest of string I'm not interested in
>title3
ID3 .... rest of string I'm not interested in
>title....

但我想添加我的信息2.txt

>ID1  text I want to extract
>ID2  text I want to extract
>ID3  text I want to extract
>IDs....

最后,我希望创建一个具有以下结构的新文件:

>title1
ID1 .... text I want
>title2
ID2 .... text I want
>title3
ID3 .... text I want
>title....

我已经尝试了几个 sed 命令,但大多数命令都没有完全替换两个文件中的 ID#。希望可以在 bash 中完成

感谢您的帮助

尝试失败..我的代码是文件 1 = cog_anotations.txt、文件 2=Real.cog.txt ID= COG05764、COG 015668 等...

sed -e '/COG/{r Real.cog.txt' -e 'd}' cog_anotations.txt
sed "s/^.*COG.*$/$(cat Real.cog.txt)/" cog_anotations.txt
sed -e '/\$COG\$/{r Real.cog.txt'  -e 'd}' cog_anotations.txt
grep -F -f cog_anotations.txt Real.cog.txt > newfile.txt
grep -F -f Real.cog.txt cog_anotations.txt > newfile.txt

实线文件1

>Bravo_5
>CDD:223731 COG0658, ComEC, Predicted membrane metalbinding protein l 
>Bravo_6
>CDD:223242 COG0164, RnhB, Ribonuclease HII [DNA replication, 
>Bravo_7
>CDD:223778 COG0706, YidC, Preprotein translocase subunit YidC .

实线文件2

COG0006    E    Xaa-Pro aminopeptidase
COG0706    J    Glutamyl- or glutaminyl-tRNA synthetase
COG0164    J    tRNA A37 threonylcarbamoyladenosine synthetase subunit 
COG0012    J    Ribosome-binding ATPase YchF, GTP1/OBG family
COG0013    J    Alanyl-tRNA synthetase

答案1

awk

awk 'NR==FNR{id[$1","]=$0}
  NR!=FNR{f=$0; getline; if (id[$2]) print f RS id[$2]}' file2 file1

>Bravo_6
COG0164    J    tRNA A37 threonylcarbamoyladenosine synthetase subunit 
>Bravo_7
COG0706    J    Glutamyl- or glutaminyl-tRNA synthetase

演练

id使用所需文本加载数组并file2添加,以与其他文件匹配

awk 'NR==FNR{id[$1","]=$0}

在第二个文件中NR!=FNR抓住第一行f并跳转到第二个getline

  NR!=FNR{f=$0; getline; 

然后测试是否id存在于您想要的数组中(id[$2])并打印是否存在

  if (id[$2]) print f RS id[$2]}' file2 file1

相关内容