我試圖用sed來替換文件中的某些字符串,並且遇到了一個問題。sed:替換部分正則表達式並保留前綴/後綴
我有以下字符串:
TEMPLATE_MODULE
TEMPLATE_SOME_ERR
TEMPLATE_MORE_ERR
我想更換TEMPLATE_MODULE一些字符串,並與模板開始和ERR結束與一個不同的字符串的所有字符串,如下:
TEMPLATE_MODULE ---> NEW_MODULE_NAME
TEMPLATE_SOME_ERR ---> NEW_MODULE_NAME_SOME_ERR
TEMPLATE_MORE_ERR ---> NEW_MODULE_NAME_MORE_ERR
更換TEMPLATE_MODULE的很簡單:
find . -type f -print -exec sed -i "s/TEMPLATE_MODULE/NEW_MODULE_NAME/g" {} +
雖然我不知道如何處理其他部分。如果我尋找以TEMPLATE_ *開頭的字符串,我還會捕獲TEMPLATE_MODULE。
我也想保持SOME_ERR或MORE_ERR後綴所以這個解決方案是行不通的:
find . -type f -print -exec sed -i "s/TEMPLATE_.*_ERR$/NEW_MODULE_NAME/g" {} +
任何想法? 謝謝!
你有GNU sed的?輸出'sed --version'? – Inian
請注意'。*'是一個正則表達式全局匹配,而不是普通的glob擴展。您需要啓用'-r'來支持它,它只在'GNU sed'中可用 – Inian
我正在使用GNU sed 4.2.2 – Vardit