명령 줄에서 내 repo 파일을 수동으로 편집하고 싶습니다 sed
. 편집하려는 저장소 이름을 기반으로 어떻게 할 수 있습니까?
예를 들어, 그 변화를 기반으로하고 옵션 : 나는 특정의 reponame (reponame-2 예) 검색 할 enabled=1
로를enabled=0
[repo-name1]
name=repo-name1
baseurl=http://linktomyrepo.com
enabled=1
sslverify=0
proxy=_none_
[repo-name2]
name=repo-name2
baseurl=http://linktomyrepo.com
enabled=1
sslverify=0
proxy=_none_
"줄"이 연속적인 줄 바꿈으로 정의되는 Perl의 "단락 모드"는 다음과 같은 경우에 완벽합니다.
$ perl -00pe 's/enabled=1/enabled=0/ if /\[repo-name1/' file [repo-name1]
name=repo-name1
baseurl=http://linktomyrepo.com
enabled=0
sslverify=0
proxy=_none_
[repo-name2]
name=repo-name2
baseurl=http://linktomyrepo.com
enabled=1
sslverify=0
proxy=_none_
또는 원본 파일을 직접 편집하려면 :
perl -i -00pe 's/enabled=1/enabled=0/ if /\[repo-name1/' file
또는 다음을 사용할 수 있습니다 awk
.
$ awk -vRS='\n\n' -vORS='\n\n' '/\[repo-name1/{sub(/enabled=1/,"enabled=0")}1;' file
[repo-name1]
name=repo-name1
baseurl=http://linktomyrepo.com
enabled=0
sslverify=0
proxy=_none_
[repo-name2]
name=repo-name2
baseurl=http://linktomyrepo.com
enabled=1
sslverify=0
proxy=_none_
최신 버전의 GNU-awk 또는 기타 awk
지원 -i
이있는 경우 다음과 같이 제자리에서 편집 할 수 있습니다.
awk -iinplace -vRS='\n\n' -vORS='\n\n' '/\[repo-name1/{sub(/enabled=1/,"enabled=0")}1;' file
또는 awk
위의 내용이 파일 끝에 추가 하는 빈 줄을 방지하려면 다음 과 같이 더 복잡한 작업을 수행 할 수 있습니다.
$ awk -F= '/\[repo-name1/{a=1}/^\s*$/{a=0}a==1 && $1=="enabled"{$2=0}1;' file
[repo-name1]
name=repo-name1
baseurl=http://linktomyrepo.com
enabled 0
sslverify=0
proxy=_none_
[repo-name2]
name=repo-name2
baseurl=http://linktomyrepo.com
enabled=1
sslverify=0
proxy=_none_
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다