0

sed と bash を使用して、ファイル内のテキスト行を置き換えようとしています。これが私のコードです。私の構文がずれているだけかもしれません。

sed -e 's/DocumentRoot /var/www/html/s///usr/share/rt3/html/' /etc/httpd/conf/httpd.conf

4

1 に答える 1

0

sed とファイル パスを使用する場合は、"/" 区切り文字を避ける方が簡単です。そうしないと、毎回エスケープすることになります。この「ピケットフェンス」形式は、読むのがひどいものです。

「DocumentRoot /var/www/html」を「DocumentRoot /usr/share/rt3/html/」に置き換えようとしていると仮定して、これを試してください。

sed 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' /etc/httpd/conf/httpd.conf

例:

~> echo "DocumentRoot /var/www/html" | sed 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_'
DocumentRoot /usr/share/rt3/html/
~>

編集:あなたのコメントから、1)ファイルを開き、2)文字列を置き換え、3)変更を元のファイルに保存したいと考えています。この場合、sed の-iフラグ (インプレース編集) を使用できます。これを試して:

sed -i 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' /etc/httpd/conf/httpd.conf

例:

~> echo "DocumentRoot /var/www/html" > file
~> cat file
DocumentRoot /var/www/html
~> sed -i 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' file
~> cat file
DocumentRoot /usr/share/rt3/html/
于 2013-07-17T19:32:46.790 に答える