我想用sed
替换以下表达式:
cos(2*a)^2+sin(3*b)^2+m1^2*m2^2*cos(4*c)
通过
cos(2*a)*cos(2*a)+sin(3*b)*sin(3*b)+m1*m1*m2*m2*cos(4*c)
正如您所看到的,我希望将这些变量的乘积本身转换为幂2(使用^ 2曝光剂)的所有变量。
我尝试使用符号“^ 2”之前的模式进行操作:
echo "cos(2*a)^2+sin(3*b)^2+m1^2*m2^2*cos(4*c)" | sed 's/\(.*\)\^2/\1\*\1/g'
但它不起作用。
如果有人可以帮助我......
由于
答案 0 :(得分:2)
您可以使用角色类:
sed 's/\([^(*+\/^-]*\(([^)]*)\)\?\)\^2/\1\*\1/g'
请注意,如果您有嵌套的括号,这将停止工作。