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消費していたため、拡張正規表現モードが有効になっていませんでした)。それを変更して問題を修正しました。reSUFFIX-i -re