SED는 파일에서 내부 파일 경로를 찾아 교체합니다.

SED는 파일에서 내부 파일 경로를 찾아 교체합니다.

아래와 같은 내부 파일 경로를 가진 자산 파일이 있습니다 "/Users/testuser/dev/app-path/widget".

test.js

[["[email protected]","/Users/testuser/dev/app-path/widget"]],"_development":true,
"_where":"/Users/testuser/dev/app-path/widget","author"

SED모든 내부 파일 경로를 다음으로 바꾸려고 합니다 .공백/비어 있음끈. 내가 grep다음을 할 때정규식일하다

grep -E '"/Users\/.*?"' ./resources/test.js

그러나 아래 정규식을 사용하려고 하면 SED내 파일의 파일 경로는 다음과 같습니다.아니요빈 문자열로 대체되었습니다. 무엇이 누락되었는지 잘 모르겠습니다. 제안해주세요.

find ./resources -type f -exec sed -i -e 's/"\/Users\/.*?"/""/g' {} \;

SED 예시

다른 유사한 게시물을 찾아보았지만 대체할 만한 내용을 찾을 수 없었습니다 "/Users/testuser/dev/app-path/widget"-->""

정규 표현식이 적용됩니다.정규 표현식 101:https://regex101.com/r/YycQkX/2/

답변1

파일을 바꾸려면 "/Users/testuser/dev/app-path/widget"POSIX 기본 정규 표현식(BRE)을 사용할 수 있습니다.""

find ./resources -type f -exec sed -i 's/"\/Users\/[^"]*"/""/g' {} +

[^"]*부분은 문자가 아닌 시퀀스와 일치합니다 ".

편집하다: 슬래시 탈출을 방지하기 위해 교체 시 다른 구분 기호를 사용할 수도 있습니다.@에드모튼), 예를 들어 다음을 :대신 사용하세요 /.

find ./resources -type f -exec sed -i 's:"/Users/[^"]*":"":g' {} +

관련 정보