sed 오류의 원인은 무엇입니까?

sed 오류의 원인은 무엇입니까?

내 그런트 파일에는 다음 명령이 있습니다.

"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에 대해 회의적입니다 .\/-iindex

답변1

  1. -es/foo/bar/ 이전에 (*)가 누락되었습니다.
  2. 혼란스럽습니다. 귀하(스크립트)가 편집 중입니까 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
    

    어디

    • -iFlag는 sed에게 파일을 제자리에서 편집하라고 지시합니다.

편집: User112638726 및 don_crissti 덕분에 오류는 매우 분명 합니다.

    sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js

sed에 의해 다음과 같이 해석됩니다.

  • -i그 자리에서 편집하고,
  • indexi(삽입) ndex,
  • 두 개의 파일로:
  • 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g'그리고 www/index.js.

나는 이라는 이름의 파일이 없다고 가정합니다. 즉, 현재 디렉토리의 디렉토리에 있는 파일입니다 s/API_CONTEXT_URI/http:\\/\\/localhost:5557/g.ghttp:\\/\\/localhost:5557API_CONTEXT_URIs


나는 항상 를 사용합니다 -e command. 두 개를 넣어야 할 경우를 대비해 sed가 (현재) 단일 명령을 처리할 수 있다는 것을 알았습니다. 과거에도 그랬는지 잘 모르겠습니다.

관련 정보