【发布时间】:2020-01-25 07:40:50
【问题描述】:
我想将一个文件的内容搜索到另一个文件中并打印匹配的行和第二个文件中匹配行之后的行。第一个文件的内容可以在第二个文件的GN 列下以> 开头的行中找到。我想写匹配的行(以>开头),然后是具有氨基酸序列的行(以“M”开头的大写字母字符串)
文件 1:
thrB
yaaX
thrC
dnaK
dnaJ
文件 2:
>sp|B1XBC8|KHSE_ECODH Homoserine kinase OS=Escherichia coli (strain K12 / DH10B) OX=316385 GN=thrB PE=3 SV=1
MVKVYAPASSANMSVGFDVLGAAVTPVDGALLGDVVTVEAAETFSLNNLGRFADKLPSEP
>sp|P0AD61|KPYK1_ECOLI Pyruvate kinase I OS=Escherichia coli (strain K12) OX=83333 GN=pykF PE=1 SV=1
MKKTKIVCTIGPKTESEEMLAKMLDAGMNVMRLNFSHGDYAEHGQRIQNLRNVMSKTGKT
>sp|P75616|YAAX_ECOLI Uncharacterized protein YaaX OS=Escherichia coli (strain K12) OX=83333 GN=yaaX PE=3 SV=1
MKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDHGWWKQH
我期望输出为:
>sp|B1XBC8|KHSE_ECODH Homoserine kinase OS=Escherichia coli (strain K12 / DH10B) OX=316385 GN=thrB PE=3 SV=1
MVKVYAPASSANMSVGFDVLGAAVTPVDGALLGDVVTVEAAETFSLNNLGRFADKLPSEP
>sp|P75616|YAAX_ECOLI Uncharacterized protein YaaX OS=Escherichia coli (strain K12) OX=83333 GN=yaaX PE=3 SV=1
MKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDHGWWKQH
到目前为止,我已经尝试过
grep -F -f file1 file2
仅打印找到匹配项的行
我只写了 awk
awk 'NR==FNR{a[$1]++;next}{} file1 file2
我可以打印匹配的行,但我不知道如何打印之后的行(以“M”开头)。
谁能帮我解决这个问题?
非常感谢您的帮助。
另外,如果我的第二个文件有多个匹配文件 1 中的字符串并且我想打印所有这些匹配项怎么办?
提前致谢
【问题讨论】: