파일의 행에 주석을 달고 주석 해제하는 쉘 스크립트

파일의 행에 주석을 달고 주석 해제하는 쉘 스크립트

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

관련 정보