다음 내용이 포함된 텍스트 파일이 있습니다.
yyyy-mm-dd, 12:34/s-show/...
yyyy-mm-dd, 13:24/s-show/...
yyyy-mm-dd, 14:32/s-show/...
yyyy-mm-dd/s-show
이제 각 줄의 /s-show/... 앞 부분 문자열을 다음과 같은 다른 문자열로 바꾸고 싶습니다.
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
이것이 어떻게 가능한지?
답변1
노력하다:
$ sed -E 's@.*(/s-show)@https://www.testpage.com\1@' File
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show
현재 위치에서 파일을 변경하려면:
sed -Ei 's@.*(/s-show)@https://www.testpage.com\1@' File # GNU (Linux)
또는:
sed -Ei '' 's@.*(/s-show)@https://www.testpage.com\1@' File # BSD (MacOS)
작동 방식:
-E
sed에게 확장 정규식을 사용하도록 지시합니다. 이렇게 하면 특정 이스케이프 문자가 필요하지 않습니다.s@old@new@
정규식을 찾아old
로 바꾸는 대체 명령입니다new
.이 예에서
old
is는.*(/s-show)
임의 개수의 모든 문자와 일치하고.*
그 뒤에는/s-show
where가/s-show
그룹 1로 저장됩니다.이 예에서는 그룹 1 로 대체
new
되었습니다 .https://www.testpage.com\1
\1