如提,各位大大午安
想問一下,小弟對Linux不熟,檔案在文字介面Ubuntu上,
regex
要被取代的字串(regex) | 取代成新字串 |
---|---|
ovesc_sp_2(?!_debug)(?!_test) | ovesc_sp_2_debug |
(?<!233)([/'"])sp([/'"]) | $1sp_debug$2 |
測試檔
/sp/
/sp_debug/
'sp'
"sp"
'233/sp'
ovesc_sp_2_debug
define('DB_NAME', 'ovesc_sp_2');
預期結果
/sp_debug/
/sp_debug/
'sp_debug'
"sp_debug"
'233/sp'
ovesc_sp_2_debug
define('DB_NAME', 'ovesc_sp_2_debug');
參考
Linux使用指令來取代檔案內的字串
第十一章、正規表示法與文件格式化處理
測試:
echo '"sp"' | sed -r 's/([/''"])sp([/''"])/$1sp_debug$2/g'
預期是 "sp_debug"
結果是 $1sp_debug$2
echo 'ovesc_sp_2___' | sed -r 's/ovesc_sp_2(?!debug)/ovesc_sp_2_debug/'
預期是 ovesc_sp_2_debug__
結果是 sed: -e 表示式 #1,字元 40: 不適用的前置常規表示式
sed -i -r 's/\/ovesc_sp_2(?!_debug)\//ovesc_sp_2_debug/' $(grep -rl 'ovesc_sp')
結果是 sed: -e 表示式 #1,字元 44: 不適用的前置常規表示式