![SED는 파일에서 내부 파일 경로를 찾아 교체합니다.](https://linux55.com/image/168156/SED%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%82%B4%EB%B6%80%20%ED%8C%8C%EC%9D%BC%20%EA%B2%BD%EB%A1%9C%EB%A5%BC%20%EC%B0%BE%EC%95%84%20%EA%B5%90%EC%B2%B4%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래와 같은 내부 파일 경로를 가진 자산 파일이 있습니다 "/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' {} \;
다른 유사한 게시물을 찾아보았지만 대체할 만한 내용을 찾을 수 없었습니다 "/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' {} +