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

Shell正则:如何在TASK与数字之间插入字符‘-’?

在Shell中给TASK和数字间插入横杠的实现方法

没问题!在Shell里你可以用sed或者awk这类文本处理工具轻松实现这个需求,下面给你两种常用的解决方案:

方法一:使用sed进行正则替换

sed是Shell环境下最常用的文本替换工具,我们可以利用它的捕获分组功能来完成插入操作:

基本命令(处理单行文本)

echo "TASK1 TASK2 TASK3" | sed 's/TASK\([0-9]\)/TASK-\1/g'

命令解释

  • s/原模式/替换模式/g:sed的替换语法,g表示全局替换(处理所有匹配项)
  • TASK\([0-9]\):匹配TASK后跟单个数字的字符串,\([0-9]\)是捕获分组,把匹配到的数字存起来
  • TASK-\1:替换成TASK-加上刚才捕获到的数字(\1引用第一个捕获分组的内容)

处理文件(原地修改)

如果要直接修改文件内容,可以加上-i参数:

# Linux环境
sed -i 's/TASK\([0-9]\)/TASK-\1/g' your_file.txt

# macOS环境(sed语法略有不同,需要加空参数)
sed -i '' 's/TASK\([0-9]\)/TASK-\1/g' your_file.txt

方法二:使用awk进行全局替换

awk的gsub函数也能实现全局正则替换,适合更复杂的文本处理场景:

基本命令(处理单行文本)

echo "TASK1 TASK2 TASK3" | awk '{gsub(/TASK([0-9])/, "TASK-\\1"); print}'

命令解释

  • gsub(/正则模式/, 替换字符串):awk的全局替换函数
  • /TASK([0-9])/:匹配TASK后跟单个数字的正则模式
  • "TASK-\\1":替换字符串,注意awk里引用捕获分组需要用双反斜杠\\1

实际效果示例

输入:TASK1 TASK2 TASK3
输出:TASK-1 TASK-2 TASK-3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:04:27