数百の awstats 構成ファイルで文字列置換を実行しようとしており、sed を使用してそうしています。ただし、作業パターンを取得するのに問題があります。
具体的には、構成で次の行を変換しようとしています。
HostAliases="REGEX[^\.*example\.com$]"
これに:
HostAliases="REGEX[\.example\.com$]"
example\.com
バリアントはどこにありますか。
sed コマンドの数十のバリエーションを試しました。例えば:
sed -i 's/^HostAliases="REGEX[^\.*/HostAliases="REGEX[\./' /etc/awstats/*.conf
sed -i 's/REGEX[^\.*/REGEX[\./' /etc/awstats/*.conf
しかし、毎回次のようなエラーが発生します。sed: -e expression #1, char 49: unterminated 's' command
問題はおそらく一部の文字をエスケープすることに関係していますが、どの文字をエスケープするか、またはそれらをエスケープする方法がわかりません。構成内の他の行と誤って一致しないように、パターンを十分に具体的にしたいので、HostAliases を含めるとよいでしょう。
sed グルが私を正しい方向に向けてくれませんか?