source

OS X에서 'sed' 명령과 'find' 명령을 함께 사용할 때 오류 발생: "invalid code"

factcode 2023. 4. 14. 22:11
반응형

OS X에서 'sed' 명령과 'find' 명령을 함께 사용할 때 오류 발생: "invalid code"

현재 클라이언트에 CVS를 사용하도록 강제되어 리모트레포의 주소가 변경되었습니다.로컬 코드의 리모트주소를 변경하는 유일한 방법은 재귀 검색과 치환입니다.

하지만 sed 명령어를 사용하면 다음과 같이 작동합니다.

find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;

모든 파일에 오류가 표시됩니다.

sed: 1: ".//file/path ...": invalid command code .

SED 경기/교체 기간에서 벗어나려고 노력했지만 아무 것도 해결되지 않았습니다.

OS X 를 사용하고 있는 경우는, 이것은 sed 커맨드와는 무관할 가능성이 있습니다.의 OSX 버전sed,그-i옵션에는 다음이 필요합니다.extension명령어를 실제로 해석할 수 있도록 합니다.extension파일 경로가 명령 코드로 해석됩니다.

를 추가해 보겠습니다.-e명백하게 논하고 양보하는 모습''의 논거로서-i:

find ./ -type f -exec sed -i '' -e "s/192.168.20.1/new.domain.com/" {} \;

이것 좀 봐.

OS X 에서는, 빈약한 빌트인 SED 를 적절히 사용할 수 있는 것은 아무것도 없습니다.해결책은 다음과 같습니다.

brew install gnu-sed

그리고 sed 대신 gsed를 사용하면 예상대로 작동합니다.

당신은 단순히 에 대한 논거를 제공하는 것을 잊었다.-i.바꾸기만 하면 된다.-i로.-i ''.

물론 이는 파일 백업을 원하지 않는다는 것을 의미합니다. 그렇지 않으면 다음과 같은 확장 옵션을 제공합니다.-i .bak.

확장자를 -i 플래그에 추가하기만 하면 됩니다.기본적으로 원래 파일과 함께 백업 파일이 생성됩니다.

sed -i.bakup 's/linenumber/number/' ~/.vimrc

sed는 오류 없이 실행됩니다.

OP의 경우는 아니지만, 그것은 나를 위한 것이었고 다른 누군가를 도울 수 있었다.

사용하시는 경우'regex를 동봉하려면'성격.워드프로세싱에서 대본을 복사해서 붙여넣고 있었는데 붙여넣고 있었어요.'~하듯이배쉬로

아마도 당신의 새로운 도메인은/만약 그렇다면, 다음 세퍼레이터를 사용해 보세요./sed,예.#,,기타.

find ./ -type f -exec sed -i 's#192.168.20.1#new.domain.com#' {} \;

동봉하는 것도 좋을 것 같습니다.s///변수 치환 또는 기타 예기치 않은 동작을 피하기 위해 큰따옴표가 아닌 작은따옴표로 표시함

언급URL : https://stackoverflow.com/questions/19456518/error-when-using-sed-with-find-command-on-os-x-invalid-command-code

반응형