ファイルの指定された行の先頭にコメントを挿入します。

ファイルの指定された行の先頭にコメントを挿入します。

これはかなり初心者の質問ですが、私がやろうとしていることはとても簡単です。開発環境のインストールを自動化するスクリプトを作成していますが、次のloadmoduleApache構成ファイルに注釈を付ける必要があります。私のLinuxマシン。

LoadModule mpm_event_module modules/mod_mpm_event.so

次のコマンドを使用してコメントを削除できました。

sudo sed -i '66s/.//' /etc/httpd/conf/httpd.conf

答え1

コメントを挿入:

sed 's/^ *LoadModule/#&/' /etc/httpd/conf/httpd.conf

コメントを削除:

sed '/^ *# *LoadModule/s/#//' /etc/httpd/conf/httpd.conf

またはスペースを削除します。

sed '/^ *# *LoadModule/s/^ *# *//' /etc/httpd/conf/httpd.conf

特定の行番号にのみ置換(挿入または削除)を適用します。 (自動インストールを実行するためのスクリプトを開発したい場合は良い考えではありません。)

# Apply on line 66 only
sed '66ba;p;d;:a /^ *# *LoadModule/s/^ *# *//' /etc/httpd/conf/httpd.conf

または(同じですが、-e他の人にも移植可能sed):

sed -e '66ba' -e 'p;d;:a' -e ':a' -e '/^ *# *LoadModule/s/^ *# *//' /etc/httpd/conf/httpd.conf

または

sed '66{/^ *# *LoadModule/s/^ *# *//}' /etc/httpd/conf/httpd.conf

一致を適用せずに固定行番号のみを編集するには、次のようにします。

# Insert comment on line 66
sed '66s/^/#/' /etc/httpd/conf/httpd.conf

# Remove comment on line 66
sed '66s/^#//' /etc/httpd/conf/httpd.conf

# Remove spaces too
sed '66s/^ *# *//' /etc/httpd/conf/httpd.conf

構成ファイルは次のように処理されます。

(入れる)

    LoadModule foo
LoadModule bar

(削除する):

    #LoadModule foo
#LoadModule bar

    #    LoadModule baz
#    LoadModule bax

答え2

Vimを使用してこれを行うこともできます。

vim -c '/LoadModule/s/^/#/|x' httpd.conf

関連情報