sed:替換匹配行中的一個或多個群組值

sed:替換匹配行中的一個或多個群組值

我正在嘗試更改文件中的配置變數。基本上,該文件具有以下格式的多行:

$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。該工具按字面意思處理它,因為它還沒有結束。

相關內容