我運行了幾個替換命令作爲colorize script for maven的核心。 其中一個sed
命令使用正則表達式,它在shell中以discussed here的形式查找。目前(不工作)的實施可以找到here。sed錯誤:「s'命令的RHS上的無效參考 1」
當我包括命令的變體到腳本不同的行爲之一發生:
變型1:
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
適應於腳本:
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
錯誤:她我會輸出相同的信息,就好像我會輸入$ sed
一樣。奇怪!?
變體2:
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
適應於腳本:
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
錯誤:
sed: -e expression #7, char 59: invalid reference \1 on `s' command's RHS
在我來說,我已經聯合起來了'-i'(替代選項編輯)與'-re',導致'-ire'(這樣'-i'消耗're'片段作爲它的'SUFFIX'參數,因此擴展正則表達式模式沒有被啓用)。將其更改爲'-i -re'解決了問題。 –
還要注意,單引號'''和雙引號'''會被略微區別對待,特別是在解釋'$ vars'時,例如:'sudo sh -c「sed -r -i's /(^。 + _supplicant.conf)/ \ 1 $ {MTXT} /'/ etc/network/interfaces「工作,但是:'sudo sh -c'sed -r -i」s /(^.+_ supplicant.conf)/ \ 1 $ {MTXT} /「/ etc/network/interfaces'' does not。 – not2qubit