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

如何在sed中复制匹配tc_前缀的完整单词

正确的sed正则写法

你的问题出在正则表达式的匹配范围上:原命令里的tc_*,*只作用在它前面的_上,意思是匹配tc后面跟0个或多个下划线,所以只会捕获到tc_这部分,自然复制的也是这部分。

要匹配整个tc_TESTNAME单词,你需要调整正则,让它覆盖从tc_开始到逗号前的所有内容,以下两种写法都可以:

方法1:使用基础正则(无需额外参数)

sed -e "s/\(tc_[^,]*\)/\1 \1/" 你的文件名
  • \(tc_[^,]*\):用转义括号定义捕获组,[^,]*表示匹配除逗号外的任意字符,这样就能完整捕获tc_TESTNAME;
  • \1 \1:把捕获到的内容重复一次,中间加空格分隔。

方法2:使用扩展正则(加-r参数简化写法)

sed -r "s/(tc_[^,]*)/\1 \1/" 你的文件名

扩展正则里括号不需要转义,写法更简洁,逻辑和上面完全一致。

执行后,原行:

foo         tc_TESTNAME,  // TEST #1

会被处理成:

foo         tc_TESTNAME tc_TESTNAME,  // TEST #1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:45:35