我有一個包含文件:
$conf['minified_version'] = 100;
我想增加與100 SED,所以我有這樣的:
sed -r 's/(.*minified_version.*)([0-9]+)(.*)/echo "\1$((\2+1))\3"/ge'
的問題是這將從原始中刪除$conf
以及任何縮進間距。我已經能夠搞清楚的是,這是因爲它試圖運行:
echo " $conf['minified_version'] = $((100+1));"
所以當然它試圖與它有沒有價值的變量來代替$conf
。
這裏的問題與源代碼中的'$'沒有任何關係 - 你已經編寫了你的正則表達式,使得不包含任何文字'$',所以你避免了顯而易見的錯誤在表達式的開始處放置一個線端錨點(一個可以通過'^ [$]'開始避免的陷阱)。相反,它試圖讓'sed'評估一個shell命令來生成替代內容,它不支持並且從不做。 –