我正在嘗試更改文件中的配置變數。基本上,該文件具有以下格式的多行:
$config['var'] = 'val';
所需的輸出:
$config['var'] = 'new_value';
這是我到目前為止所想到的:
sed -i -r "s/^\$config\['var'\]\s*=\s*(..*);$/\1'new_value'/g" config.cfg
我已經嘗試過這裡無數類似問題的答案,但沒有任何運氣。有什麼線索我可能做錯了什麼嗎?
答案1
您不必將config
或包含var
在搜尋模式中。使用/^$config\['var'\]/
befores/…/…/
僅在以 開頭的行內執行搜尋和取代$config['var']
。這使得整個任務變得更容易。
sed "/^\$config\['var'\]/ s/=.*;/= 'new_value';/"
$
由於雙引號,註釋被轉義。當它到達 時就不再逃脫了sed
。該工具按字面意思處理它,因為它還沒有結束。