如何用sed将文件中所有tmp_[任意位数数字]替换为tmp__数字_?
Sed 替换
tmp_[数字]格式字符串为tmp__数字_ 要实现将文件中所有匹配tmp_[N](N为任意位数数字)的字符串替换为tmp__N_,可以使用带扩展正则的sed命令:
sed -E 's/tmp_\[([0-9]+)\]/tmp__\1_/g' 你的目标文件名
命令细节说明:
-E:启用扩展正则表达式语法,简化分组捕获的写法(无需对括号转义)s/原模式/替换模式/g:全局替换指令,g标记确保一行内所有匹配项都会被替换- 匹配模式
tmp_\[([0-9]+)\]:tmp_\[:匹配字面量tmp_[([是正则特殊字符,必须用\转义)([0-9]+):捕获1个或多个连续数字,后续用\1引用这段捕获的内容\]:匹配字面量](同样需要转义处理)
- 替换模式
tmp__\1_:- 固定前缀
tmp__+ 捕获到的数字(\1) + 固定后缀_
- 固定前缀
示例效果:
输入内容:
hello tmp_[123] world tmp_[45] test_line
执行命令后输出:
hello tmp__123_ world tmp__45_ test_line
如果需要直接修改原文件(原地替换),根据sed版本添加参数:
- GNU sed(Linux系统):
sed -i -E 's/tmp_\[([0-9]+)\]/tmp__\1_/g' 你的目标文件名 - BSD sed(macOS系统):
sed -i '' -E 's/tmp_\[([0-9]+)\]/tmp__\1_/g' 你的目标文件名
内容的提问来源于stack exchange,提问作者Baneshwar Shanbhag
相关产品推荐
相关产品推荐

