You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed/awk/tr替换A.nwk中CleanAgrobacterium与_gene间字符串为ZZZ

替换NWK文件指定区间字符串的解决方案

需求

将文件A.nwk中所有位于CleanAgrobacterium和_gene之间的字符串替换为ZZZ。

原文件A.nwk内容:

(((CleanAgrobacterium_fabrum_str__C58_DE0068_Scaffold_Proteins_gene-FS783_RS12830:0,CleanAgrobacterium_fabrum_str__C58_DE0067_Scaffold_Proteins_gene-FS653_RS12825:0):0.056789,(CleanAgrobacterium_fabrum_GV2260_Complete_Genome_Proteins_gene-EML4058_RS17445:0,(CleanAgrobacterium_fabrum_1D1416_Chromosome_Proteins_gene-NQG32_RS17500:0,(CleanAgrobacterium_fabrum_PDC82_Contig_Proteins_gene-BLT49_RS14090:0,(CleanAgrobacterium_fabrum_N3394_Scaffold_Proteins_gene-G6L76_RS17395:0,(CleanAgrobacterium_fabrum_12D13_Complete_Genome_Proteins_gene-At12D13_RS18010:0,(CleanAgrobacterium_fabrum_Bi46_Contig_Proteins_gene-LQ162_RS02700:0,(CleanAgrobacterium_fabrum_ARqua1_Scaffold_Proteins_gene-HI842_RS18310:0,(CleanAgrobacterium_fabrum_N4094_Scaffold_Proteins_gene-G6L42_RS17400:0,(CleanAgrobacterium_fabrum_GV3101__pMP90_Complete_Genome_Proteins_gene-EML485_RS17435:0,(CleanAgrobacterium_fabrum_Kin001_Complete_Genome_Proteins_gene-FY134_RS17775:0,(CleanAgrobacterium_fabrum_LBA645_Complete_Genome_Proteins_gene-KXJ62_RS17445:0,(CleanAgrobacterium_fabrum_Di1525a_Scaffold_Proteins_gene-G6L89_RS17735:0,(CleanAgrobacterium_fabrum_NFIX02_Scaffold_Proteins_gene-BLR22_RS16795:0,(CleanAgrobacterium_fabrum_Arqua_Contig_Proteins_gene-EXN51_RS19140:0,(CleanAgrobacterium_fabrum_str__J-07_J-07_Scaffold_Proteins_gene-AGR8A_RS20015:0,CleanAgrobacterium_fabrum_1D132_Complete_Genome_Proteins_gene-At1D132_RS18580:0):0):0):0):0):0):0):0):0):0):0):0):0):0):0):0):0,(CleanAgrobacterium_fabrum_EHA105_Complete_Genome_Proteins_gene-EML540_RS17455:0,(CleanAgrobacterium_fabrum_RIT-As-3_Contig_Proteins_gene-ORG40_RS11815:0,(CleanAgrobacterium_fabrum_2788_Contig_Proteins_gene-G6L39_RS17590:0,(CleanAgrobacterium_fabrum_BG5_Complete_Genome_Proteins_gene-F3P66_RS17495:0,(CleanAgrobacterium_fabrum_Bi05_Contig_Proteins_gene-LQV40_RS07170:0,(CleanAgrobacterium_fabrum_str__C58_C58_Complete_Genome_Proteins_gene-ATU_RS17440:0,CleanAgrobacterium_fabrum_NFIX01_Scaffold_Proteins_gene-BMY00_RS16800:0):0):0):0):0):0):0);

错误命令分析

你之前使用的命令:

sed "/CleanAgrobacterium/,/gene-/d" A.nwk

该命令的作用是删除从匹配CleanAgrobacterium的行到匹配gene-的行,并非替换指定区间的字符串,因此无法实现需求。

正确解决方案

方法1:使用sed命令

利用sed的正则替换功能,通过捕获组定位需要替换的区间:

sed 's/CleanAgrobacterium\(.*\)_gene/CleanAgrobacteriumZZZ_gene/g' A.nwk
  • s/原模式/替换模式/g:全局替换所有匹配的内容
  • CleanAgrobacterium\(.*\)_gene:匹配以CleanAgrobacterium开头、_gene结尾的片段,\(.*\)捕获两者之间的任意内容
  • 替换为CleanAgrobacteriumZZZ_gene,直接将捕获的中间内容替换为ZZZ

方法2:使用awk命令

通过awk的gsub函数实现全局替换:

awk '{gsub(/CleanAgrobacterium.*?_gene/, "CleanAgrobacteriumZZZ_gene")}1' A.nwk
  • gsub:awk中的全局替换函数
  • .*?:非贪婪匹配,确保每个CleanAgrobacterium只匹配到最近的_gene(避免跨多个匹配项)
  • 1:用于输出处理后的每一行

替换后效果示例

处理后的文件片段如下:

(((CleanAgrobacteriumZZZ_gene-FS783_RS12830:0,CleanAgrobacteriumZZZ_gene-FS653_RS12825:0):0.056789,(CleanAgrobacteriumZZZ_gene-EML4058_RS17445:0,...

内容的提问来源于stack exchange,提问作者Slimane khayi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:55:28