我试图在添加值时简单地查找替换数字但在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
答案 0 :(得分:2)
这是awk
echo "abc top: 234px" | awk '$NF=$NF+16"px"'
abc top: 250px
搜索top
时更加强大:
echo "abc top: 234px" | awk '/top:/ {$NF=$NF+16"px";print}'
abc top: 250px
此处您不需要格式前缀px
:
echo "abc top: 234px" | awk 'sub(/[0-9]+/,$NF+16)'
abc top: 250px
或
echo "abc top: 234px" | awk '/top:/ {sub(/[0-9]+/,$NF+16);print}'
abc top: 250px
答案 1 :(得分:1)
您无法使用外部命令返回反向引用 - 评估echo | bc
时(一旦修复引用以便首先对它们进行评估),{{1}脚本尚未解析。
您可以做的是切换到允许对捕获值进行算术运算的工具。
sed
答案 2 :(得分:1)
难以使用sed,但这是一个perl解决方案:
$ echo "abc top: 234px" | perl -pe 's/(\d+)/16 + $1/ge'
abc top: 250px