mavenのcolorizeスクリプトのコアとしていくつかの置換コマンドを実行します。sed
コマンドの1つは、ここで説明するように、シェルで機能する正規表現を使用します。現在の(動作していない)実装はここにあります。
コマンドのバリアントの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式#7、char 59: `s 'コマンドのRHSの参照\ 1が無効です
特にを解釈する場合、一
—
not2qubit 2018年
'
重引用符と二重引用符の"
扱いが少し異なることに注意して$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'
機能しません。
-i
(編集オプション)とを組み合わせており-re
、その結果-ire
(フラグメントを引数として-i
消費していたため、拡張正規表現モードが有効になっていませんでした)。それを変更して問題を修正しました。re
SUFFIX
-i -re