我必須創建一個腳本來替換apache的httpd.conf
文件中的幾行。我有兩個問題。首先,我如何將多行保存到一個變量中?我想這一點,但沒有奏效用sed替換多行變量
replace="#ErrorLog "logs/error_log" '\n' ErrorLog "|<apache_location>/bin/rotatelogs <apache_location>/logs/error.%Y.%m.%d.log 86400"
的'\n'
沒有工作添加一個換行符。然後,我的想法是使用SED(1)所示:
sed -i "s#ErrorLog "logs/error_log"#$replace#g" $apache_httpd
我不知道這是否會奏效。
我能夠創建幾行變量:
VAR="#ErrorLog \"logs/error_log\""
VAR="$VAR"$'\n'"ErrorLog \"|<apache_location>/bin/rotatelogs <apache_location>/logs/error.%Y.%m.%d.log 86400\""
replace="ErrorLog \"logs/error_log\""
現在的問題自帶的sed,我不得不使用不同的分隔符(http://backreference.org/2010/02/20/using-different-delimiters-in-sed/)。但它一直在失敗。
sed -i "s;$replace;$VAR;g" /root/daniel/scripts/test3/httpd.conf
的sed:-e表達式#1,焦炭54:未結束的'S'命令
只是一般般的簡單,但總的原則問題,你會發現任何涉及多行打交道時的sed的基於行的處理可以是一個痛苦的對接。在這些情況下,並且通常在許多其他情況下,您會發現在sel中交換sed可以使這些曾經令人沮喪地複雜的事情變得非常簡單和容易。所以你的Perl行會像'perl -i.orig -ple's/foo/bar/g'somefiles'。 – tchrist 2013-04-21 17:30:23
謝謝,但腳本現在有幾百行:(而且我不想重新啓動 – radicaled 2013-04-21 20:05:26