如何使用Bash sed修改整数

如何使用Bash sed修改整数,bash,sed,Bash,Sed,我有这样一个XML节点: <point type="2D" x="61" y="273" /> 但它失败了: syntax error: operand expected (error token is "\\1 * 2") 您知道如何实现这一点吗?使用perl很容易实现: perl -p -e 's/x="([0-9]+)"/"x=\"".($1*2)."\""/e' input.xml 要直接替

我有这样一个XML节点:

<point type="2D" x="61" y="273" />
但它失败了:

syntax error: operand expected (error token is "\\1 * 2")

您知道如何实现这一点吗?

使用perl很容易实现:

perl -p -e 's/x="([0-9]+)"/"x=\"".($1*2)."\""/e' input.xml

要直接替换,请添加-i like you with sed。

使用perl很容易实现这一点:

perl -p -e 's/x="([0-9]+)"/"x=\"".($1*2)."\""/e' input.xml

若要直接替换,请添加-i like you will with sed。

sed
不是合适的工具。您可以将此gnu awk命令与自定义的记录分隔符一起使用:

awk -v RS='.*x="|".*' '!NF{ s=RT } NF{ print s $1*2 RT }' file
<point type="2D" x="122" y="273" />
awk-vrs='.*x=“|”!NF{s=RT}NF{print s$1*2rt}文件

但是,最好使用适当的XML解析器进行彻底的XML解析。

sed
不是用于此目的的合适工具。您可以将此gnu awk命令与自定义的记录分隔符一起使用:

awk -v RS='.*x="|".*' '!NF{ s=RT } NF{ print s $1*2 RT }' file
<point type="2D" x="122" y="273" />
awk-vrs='.*x=“|”!NF{s=RT}NF{print s$1*2rt}文件

但是,最好使用适当的XML解析器进行彻底的XML解析。

正如我所说的:如果添加-I标志,所有出现的x=“somenumber”都会受到影响。或者你是说x,y,其他值?这可以用同样的方法完成。正如我所说的:如果添加-I标志,所有x=“somenumber”的出现都将受到影响。或者你是说x,y,其他值?这可以用同样的方法实现。