검색 및 바꾸기를 실행하려고 하면 "sed: -e 표현식 #1"이 표시됩니다.

검색 및 바꾸기를 실행하려고 하면 "sed: -e 표현식 #1"이 표시됩니다.

저는 아마존 리눅스를 사용하고 있습니다. 검색 및 교체를 수행하기 위해 sed를 사용하려고합니다. 다음과 같은 오류가 발생합니다...

[jboss@mydevbox nodejs]$ sed -i -e "s/test.smokeTest('(.*?)', '(.*?)', '(.*?)')/test.smokeTest('username', 'password', 'http://localhost:8081/myproject')/g" test.js 
sed: -e expression #1, char 96: unknown option to `s'

위의 문제를 해결하기 위해 무엇을 해야 할지 잘 모르겠습니다. 단지 작은따옴표와 큰따옴표에 몇 가지 문제가 있다는 것뿐입니다.

편집하다:제가 사용하고 있는 샘플 파일입니다

//Creates the new browser and Logins in
console.log('Validation Complete');
var test = require('./js/Optimus.js');

test.smokeTest('####', '####', 'http://mydomain.com/myproject/');

답변1

첫 번째:

  • 에 사용했던 마지막 큰따옴표를 변경하세요 ".

그런 다음
주요 문제는 sed 옵션을 사용하고 있지만 문자열에도 (따옴표가 없음 /)이 포함되어 있다는 것입니다. 가장 간단한 해결책은 구분 기호를 다음과 같이 변경하는 것입니다.s/#s

sed -i -e "s#test.smokeTest('(.*?)', '(.*?)', '(.*?)')#test.smokeTest(‘username’, ‘password’, 'http://localhost:8081/myproject')#g” test.js

나는 또한 당신이 이 문제를 해결해야 한다고 믿습니다.

  • 귀하는 및 주변에서 username및 을 (를) 사용하고 있습니다 password. 로 변경하십시오 '.

새 파일을 편집합니다.

방금 질문에 추가한 파일의 경우 대괄호를 이스케이프 처리하고 다음을 제거해야 합니다 ?.

sed -i -e "s#test.smokeTest('\(.*\)', '\(.*\)', '\(.*\)')#test.smokeTest('username', 'password', 'http://localhost:8081/myproject')#g" test.js

관련 정보