파일의 두 문자열 사이의 특정 텍스트를 대체하는 bash 스크립트를 사용하고 있습니다.URL 부분을 bash로 바꾸기
gatewayIp:"the.old.domain.name.com",
봐 이런 :이이처럼 보이는 파일의 라인을 만들기 위해 좋은 작품
GATEWAYURL = 'myDomain.com'
CONFIGFILE = 'full/path/to/config.file'
replacementString1="s/(?<=gatewayIp:).*(?=,)/\"${GATEWAYURL}\"/;"
perl -pi -e $replacementString1 $CONFIGFILE
: 그것은 다음과 같습니다
gatewayIp:"myDomain.com",
모두 좋지만, 내 삶에 대해 나는 이것이 URL의 일부를 대체하기 위해 어떻게 작동하는지 알아낼 수 없다. 예를 들어 내가 원하는 :
redirectUri: "http://the.old.domain.name.com/oauth2callback.html",
가 될 :
redirectUri: "http://myDomain.com/oauth2callback.html",
나는이 일을 할 생각 :
replacementString1="s/(?<=redirectUri: \"http:\/\/).*(?=\/oauth2callback.html)/${GATEWAYURL}/;"
그러나 나는 다음과 같은 오류 얻을 :
Substitution pattern not terminated at -e line 1.
을 나는 탈출 할 수있는 다른 방법을 시도했다. // 및/url에서는 작동하지만 제대로 작동하지 않는 것 같습니다.
당신은'GATEWAYURL'를 정의하지만 분명히 그것은 이스케이프 슬래시를 포함하는 방법을 표시하지 않습니다. 가장 간단한 해결 방법은 텍스트에없는 구분 기호를 사용하는 것입니다. @ EranBen-Natan의 답은'sed'로 이것을 보여 주지만 Perl에서도 같은 구문을 사용할 수 있습니다. – tripleee