以下works in Javascript作爲搭配:匹配字忽略額外字符同一個詞在sed
[^\$]fileref.*
然而,在sed正則表達式不匹配任何東西。我想在忽略變量標識符的情況下替換bash文件中的變量引用。前提是我有一個默認的佔位符文件,需要使用sed -i從shell腳本更新。我無法找到爲什麼sed對此表達式有問題的原因。
桑達試驗例:
echo -e 'fileref=old\n./executable $fileref' | sed 's/[^\$]fileref.*/fileref=replaced/g'
從GNU輸出的sed(Ubuntu或者CENTOS),其中沒有發現匹配:
fileref=old
./executable $fileref
希望的輸出:
fileref=replaced
./executable $fileref
sed逐行工作,「fileref」之前沒有字符。如果你想匹配一行的開始,使用'^'錨點。順便說一句,你不需要在字符類中轉義'$'。 –