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