我正在使用以下bash代码,使用sed将HTML文件中的所有“ 600”实例替换为“ 123”:
sed -i '' -e 's/'\"600\"'/'\"123\"'/' index.html
我想扩展搜索范围,使其不仅针对带引号的600实例,而且还针对任何非数字字符。
例如,将-600-,600,^ 600 ^作为目标,而将16001,-6001、1600-作为目标。
答案 0 :(得分:1)
您可以使用组捕获前缀和后缀。 [^0-9]
匹配非数字字符。
sed -i '' -E 's,([^0-9])600([^0-9]),\1123\2,g' index.html
示例:
a600a
^600^
16001
600
成为
a123a
^123^
16001
600
您还可以使用它来修复最后一行(600没有前缀/后缀):
sed -i '' -E 's,([^0-9]|^)600([^0-9]|$),\1123\2,g' index.html
结果:
a123a
^123^
16001
123