查找字符串并替换

find string and replace

你好,我有一个这样的文件

L_00001_mRNA_interferase_MazF ATGGATTATCCAAAACAAAAGGATATTGTCTGGATTGATTTTGACCCTTCTAAAGGCAAA GAGATAAGAAAGCGGAGACCTGCGTTAGTAGTTAGTAAAGATGAATTTAATGAACGTACA GGTTTCTGTTTAGTTTGCCCCATCACATCTACTAAAAGGAACTTTGCAACGTATATTGAA ATAACAGACCCACAGAAAGTAGAAGGGGACGTAGTTACCCATCAATTGCGAGCGGTTGAT TACACCACAAGAAATATCGAAAAAATTGAACAATGTGATATGTTGACGTGGATTGATGTA GTAGAAGTAATCGGAATGTTTATTTAA

L_00002_hypothetical_protein ATGGAAACGGTAGTTAGAAAGATAGGGAATTCAGTAGGAACTATTTTTCCGAAAAGTATT TCACCACAAGTTGGAGAAAAGTTCACTATTCTTAAAGTTGGGGAAGCGTATATATTGAAA CCTAAGAGAGAAGATATTTTTAAAAATGCTGAAGATTGGGTAGGGTTTAGAGAAGCTTTG ACTAATGAAGATAAAGAATGGGACGAGATGAAACTTGAGGGAGGAGAACGCTAG

L_00003_hypothetical_protein ATGACAACGTTTGGAGAAATTCATAGCAATGCAGAAGGTTATAAAAACGATTTTAATGAG TTGAATAAATTAGTATTACGTGTAGCTGAAGAAAAAGCAAAAGGAGAGCCATTAGTAACG TGGTTTCGGTTGCGGAATCGTAGGATTGCACAAGTATTAGACCCAATGAAAGAAGAAGTA GAAAGTAAATCAAAGTACGAAAAAAGAAGAGTAGCAGCAATTAGTAAAAGCTTTTTTCTA CTTAAAAAAGCTTTTAACTTTATTGAAGCAGAACAATTTGAAAAAGCAGAAAAATTAATT

我想用字符串替换每个序列的 header。

我有一个像

这样的转换文件

L_00001_mRNA_interferase_MazF galM、GALM、醛糖 1-差向异构酶 [EC:5.1.3.3]

L_00002_hypothetical_protein E3.2.1.85,lacG,6-phospho-beta-galactosidase[EC:3.2.1.85]

L_00003_hypothetical_protein PTS-Lac-EIIB,lacE,PTSsystem,lactose-specificIIBcomponent[EC:2.7.1.69]

你的问题不清楚你在哪个平台上(Windows、Linux、Mac、...)、你被限制使用什么语言,以及输入文件的确切细节。

假设您使用 Linux,或者有 sedawk 可用以及命令 shell,它可以像 (其中 $ 表示 Bourne-like shell 提示):

$ awk '{print "s/^"  "/"  "/"}' conversions.txt > conversions.sed
$ sed -f conversions.sed sequences.txt > relabeled.txt

假设您的第一个文件(带有您想要更改的标题)名为 sequences.txt,第二个文件(“转换文件”)名为 conversions.txt。进一步假设“转换文件”每行包含一个记录,正好有两个字段——原始字段和替换字段 headers——由空格分隔(即既不是原始 header 也不是新的 header 包含任何空格)并且没有空行。

在此解决方案中,第一行 (awk) 将 conversions.txt 文件转换为 sed 脚本,conversions.sed;第二行 (sed) 然后在 sequences.txt 文件上运行此脚本,生成 relabeled.txt 文件,这可能(也可能不是)您要查找的内容。

根据您的输入文件的确切性质,这在您的问题中并不清楚,这可能需要一些调整。

希望这对您有所帮助。