
lserverなど、すべてのサーバーを一覧表示するファイルがあります。
$ cat lserver
A1
A2
A3
lserverの例:すべてのサーバーにコメントを付けるためのシェルスクリプトを作成したいと思います。
$ stopm.sh A2
$ cat lserver
A1
#A2
A3
lserverからサーバーのコメントを外します。
$ startm.sh A2
$ cat lserver
A1
A2
A3
どんな提案がありますか?
答え1
コメント:
server=A2; sed -i "/^$server/ c#$server" file.txt
コメント解除:
server=A2; sed -i "/^#$server/ c$server" file.txt
答え2
次の機能を試してください。
function comment() {
local regex="${1:?}"
local file="${2:?}"
local comment_mark="${3:-#}"
sed -ri "s:^([ ]*)($regex):\\1$comment_mark\\2:" "$file"
}
function uncomment() {
local regex="${1:?}"
local file="${2:?}"
local comment_mark="${3:-#}"
sed -ri "s:^([ ]*)[$comment_mark]+[ ]?([ ]*$regex):\\1\\2:" "$file"
}
使用法:
comment REGEX FILE [COMMENT-MARK]
uncomment REGEX FILE [COMMENT-MARK]
COMMENT-MARK default value is #
あなたの場合は、次のことを行います。
comment A2 /path/to/lserver
答え3
(server=A2; sed -ir -e "s/^$server\$/#\1/")
答え4
I have done by below script and it worked fine too
Scriptname
#!/bin/bash
echo "enter the servername"
read s1
sed -i "/$s1/s/^/#/g" filename
sed -i "s/^#//g" filename