如何使用sed替换字符串中的值,但保持字符串完整无缺?
例如 echo "01XX1234"
我希望将其替换XX
为十六进制值,01
并1234
保持和不变。我已经尝试了所有我能想到的组合,但是sed
正在使我变得更好。
我可以这样做,但是有没有更简单的方法?
echo "01XX1234" | sed -n 's/\(01..1234\)/01AB1234/g'
sed
只会替换字符串的匹配子字符串。
$ echo '01XX1234' | sed 's/XX/AF/'
01AF1234
如果您打算始终替换第三个和第四个字符,但保持第一个和第二个字符不变,则可以使用:
$ echo '01XX1234' | sed 's/\(.\{2\}\).\{2\}/\1AF/'
01AF1234
\{2\}
表示两次出现在前面的字符(在这种情况下.
:任何字符)\(...\)
括号用于创建匹配组;您可以稍后在模式或替换字符串中引用匹配的子字符串\1
引用第一个匹配的子字符串(在这种情况下,即“ 01”)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句