的產品更換電源2的一個變量,我想用sed
替換下列表達式:由sed的 - 由兩個變量
cos(2*a)*cos(2*a)+sin(3*b)*sin(3*b)+m1*m1*m2*m2*cos(4*c)
cos(2*a)^2+sin(3*b)^2+m1^2*m2^2*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'
,但它不工作。
如果有人可以幫助我...
感謝
這不是一個簡單的任務。你如何確定「^ 2」之前的「單位」是什麼?你需要解析表達式,而'sed'不能這樣做。 –
正則表達式不是解決每個問題的方法。通常,由於在括號內具有任意嵌套的子表達式的能力,所以這組有效的數學表達式不構成常規語言。 'sed'正則表達式無法正確識別這些字符串。例如,您無法編寫正確識別正確匹配圓括號的正則表達式。如果你可以在'^'之前給出*精確的*允許的內容,你可以寫一個正則表達式來捕獲它。 – chepner