내 그런트 파일에는 다음 명령이 있습니다.
"sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js"
이것은 내가 작성한 파일이 아닙니다. 이 파일은 유지 관리 프로젝트로 나에게 와야 합니다. 그래서 나는 그 줄을 올바르게 이해하지 못합니다. API_CONTEXT_URI 문자열을 API_CONTEXT_URI 에 제공된 URL로 바꿔야 합니다 index.js
. 오류는 다음과 같습니다
can't read s/API_CONTEXT_URI/http://localhost:5557/g: No such file or directory
내 설명에 따르면 sed
찾을 수 없습니다 index.js
. 하지만 폴더 index.js
에 하나가 있습니다 www
. 탈출을 \\/
위해 변경을 시도했지만 여전히 작동하지 않습니다. 어디서 볼 수 있는지 알려줄 수 있는 사람이 있나요? 나는 명령의 and에 대해 회의적입니다 .\
/
-i
index
답변1
-e
s/foo/bar/ 이전에 (*)가 누락되었습니다.혼란스럽습니다. 귀하(스크립트)가 편집 중입니까
index
아니면www/index.js
?index
생성용 템플릿 파일(API_CONTEXT_URL 포함)인 경우www/index.js
권장합니다.sed -e s,API_CONTEXT_URL,http://localhost:5557,g index > www/index.js
대신 채팅 사이에 구분 기호를 사용할 수 있습니다. 저는 너무 많은 이스케이프를 피하기 위해 쉼표(,)를 사용했습니다.
편집하려는 파일이
www/index.js
다음을 사용하는 경우sed -i -e s,API_CONTEXT_URL,http://localhost:5557,g www/index.js
어디
-i
Flag는 sed에게 파일을 제자리에서 편집하라고 지시합니다.
편집: User112638726 및 don_crissti 덕분에 오류는 매우 분명 합니다.
sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js
sed에 의해 다음과 같이 해석됩니다.
-i
그 자리에서 편집하고,index
즉i
(삽입)ndex
,- 두 개의 파일로:
's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g'
그리고www/index.js
.
나는 이라는 이름의 파일이 없다고 가정합니다. 즉, 현재 디렉토리의 디렉토리에 있는 파일입니다 s/API_CONTEXT_URI/http:\\/\\/localhost:5557/g
.g
http:\\/\\/localhost:5557
API_CONTEXT_URI
s
나는 항상 를 사용합니다 -e command
. 두 개를 넣어야 할 경우를 대비해 sed가 (현재) 단일 명령을 처리할 수 있다는 것을 알았습니다. 과거에도 그랬는지 잘 모르겠습니다.