【发布时间】:2015-01-26 23:38:02
【问题描述】:
我正在尝试在添加值时进行简单的查找替换数字,但在 Mac OS X 下未能这样做,例如
echo "abc top: 234px" |sed -E 's/top:[[:space:]]*([0-9]+)/echo $(echo "\1+16"|bc)/g'
应该输出:"abc top: 250px"
而是输出:abc echo $(echo "234+16"|bc)px
【问题讨论】:
-
使用硬引号 (
') 会阻止$(echo "\1+16"|bc)被扩展。 -
@PaulR 有什么办法解决
-
你只需要修正你的引用,即不要在你想要扩展的东西周围使用硬引号。
-
您会添加一个固定版本作为答案吗?当我删除引号时,它给了我
-bash: syntax error near unexpected token('` error -
看起来即使您修复了引用也无法正常工作,因为您无法在 sed 中进行算术运算 - 请参阅 stackoverflow.com/questions/2687009/… + 考虑改用 awk。