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

如何使用sed实现文本行指定前缀统一补全固定内容

问题原因分析

你最初的命令失效是因为匹配规则里的[^M]会实际匹配并消耗_10090后的第一个非M字符,替换时没有把这个字符加回去,就出现了首字符丢失的问题。

解决方案

方案1:修复原分步替换逻辑

用sed的捕获组功能保留被匹配到的非M字符,修改后的命令如下:

  1. 补全缺失的Mus musculus:
sed 's/_10090 \([^M]\)/_10090 Mus musculus \1/g'

其中\1就是被[^M]匹配到的字符,替换时会原样放回。

  1. 再补全缺失的(house mouse):
sed 's/Mus musculus \([^(]\)/Mus musculus (house mouse) \1/g'

可以合并为单次执行:

sed -e 's/_10090 \([^M]\)/_10090 Mus musculus \1/g' -e 's/Mus musculus \([^(]\)/Mus musculus (house mouse) \1/g' 目标文件路径

方案2:通用全适配方案

如果不需要分步判断缺失内容,无论行内物种信息缺多少都可以直接输出标准格式,可以用更简洁的正则直接重组行结构:

sed -E 's/^([0-9]+_10090).*(Gene [0-9]+)$/\1 Mus musculus (house mouse) \2/' 目标文件路径

该命令会直接提取每行开头的序号和末尾的基因标识,中间自动拼接固定的物种全称,适配所有缺失场景。

输出结果

两种方案运行后都会得到你期望的输出:

1_10090 Mus musculus (house mouse) Gene 1
2_10090 Mus musculus (house mouse) Gene 2
3_10090 Mus musculus (house mouse) Gene 3
4_10090 Mus musculus (house mouse) Gene 4

内容的提问来源于stack exchange,提问作者Billy Mills

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:54:02