我試圖在數百個awstats配置文件上執行字符串替換,並使用sed來執行此操作。但是,我無法獲得工作模式。無法找到工作的sed模式
具體而言,我想這條線轉換在configs:
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大師請指點我正確的方向嗎?
謝謝,你的回答讓我想到正確的方式,所以我可以解決我自己的問題。我需要的實際sed命令是'sed -i's/^ HostAliases =「REGEX \ [^ \\\。\ */HostAliases =」REGEX [\\ ./'/ etc/awstats/*。conf'。我正在授予最佳解釋的觀點。 – 2011-04-13 20:32:35