【发布时间】:2021-07-30 03:18:15
【问题描述】:
我想用正则表达式替换一些数字,然后用 sed 做一些数学运算,但是,我的解决方案丢失了原始报价,我已经检查了 echo 的参数并尝试使用 -E 但它不起作用,有人可以帮忙吗?
源文件内容
cat f1.txt
<AB port="10000" address="0.0.0.0" adpcpu="1"/>
我的命令
sed -r 's/(.*)(port=\")([0-9]+)(\".*)/echo \"\1\2$((\3+50))\4\"/ge' f1.txt
结果
<AB port=10050 address=0.0.0.0 adpcpu=1/>
生成的内容错过了引用
【问题讨论】:
-
Don't Parse XML/HTML With Regex. 我建议使用 XML/HTML 解析器 (xmlstarlet, xmllint ...)。