~/.subversion/servers
Subversion 구성 파일( ) 이 있습니다 .
프록시 정보(호스트, 포트, 예외)를 추가하려면 수정이 필요합니다. 파일에는 프록시 정보가 포함된 많은 섹션이 포함되어 있습니다. 그냥 수정하고 싶어요[글로벌].
이에 대한 정규식을 만들었지만 작동하지 않습니다.
/(\[global\].*[\n])((.*[\n])*)([\s\#]*http-proxy-port\s?=\s?.*)/gm
온라인 테스트를 해볼 수 있습니다.https://regex101.com/다음으로 대체하는 것이 좋습니다.
\1\2http-proxy-port=9000
sed
위의 줄을 실행 해 보았 으나 아무 일도 일어나지 않았습니다.
sed -i -r 's/(\[global].*[\n])((.*[\n])*)([\s\#]*http-proxy-port\s?=\s?.*)/\1\2http-proxy-port=9000/gm' \
~/.subversion/servers
sed
위 정규식을 어떻게 사용할 수 있나요 ?
이 예에서는 파일을 파괴합니다.
### The currently defined server options are:
### http-proxy-host Proxy host for HTTP connection
### http-proxy-port Port number of proxy host service
### http-proxy-username Username for auth to proxy service
### http-proxy-password Password for auth to proxy service
### http-proxy-exceptions List of sites that do not use proxy
### http-timeout Timeout for HTTP requests in seconds
[groups]
# group1 = *.collab.net
# othergroup = repository.blarggitywhoomph.com
# thirdgroup = *.example.com
### Information for the first group:
# [group1]
# http-proxy-host = proxy1.some-domain-name.com
# http-proxy-port = 80
# http-proxy-username = blah
# http-proxy-password = doubleblah
# http-timeout = 60
### Information for the second group:
# [othergroup]
# http-proxy-host = proxy2.some-domain-name.com
# http-proxy-port = 9000
### SSL certificate. See details above for overriding security
### due to SSL.
[global]
# http-proxy-exceptions = *.domain.org, *.domain.com
# http-proxy-host = proxy.domain.com
# http-proxy-port = 8080
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
예상되는 출력은 다음과 같습니다.
...
[global]
http-proxy-exceptions = *.otherdomain.org, *.otherdomain.com, 127.0.0.1, localhost
http-proxy-host = proxy.otherdomain.com
http-proxy-port = 9000
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
답변1
제안한대로,INI 파일을 편집하는 더 좋은 방법이 있습니다...
하지만 이를 수행하는 방법은 다음과 같습니다 sed
.
sed '/^\[.*\]/h
/http-proxy-exceptions/{x;/\[global\]/!{x;b;};x;c\
http-proxy-exceptions = *.otherdomain.org, *.otherdomain.com, 127.0.0.1, localhost
}
/http-proxy-host/{x;/\[global\]/!{x;b;};x;c\
http-proxy-host = proxy.otherdomain.com
}
/http-proxy-port/{x;/\[global\]/!{x;b;};x;c\
http-proxy-port = 9000
}' infile
라인 일치가 발견될 때마다 보유 버퍼는 패턴 공간 내용으로 덮어쓰여집니다 (즉, 각 섹션 이름은 이전 버퍼 [.*]
에 저장됩니다 ). 패턴과 일치하는 모든 줄 h
의 버퍼를 변경합니다 . - 예약된 공간이 일치하는 경우http-.*
x
아니요( !
)가 일치 [global]
하면 x
다시 변경되어 다음 루프로 건너뜁니다 b
. Keep 공간이 일치하면 다시 변경되어 [global]
패턴 공간의 콘텐츠가 일시 중지됩니다.x
c