일부 문자열을 교체

일부 문자열을 교체

다음 내용이 포함된 텍스트 파일이 있습니다.

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)

작동 방식:

  • -Esed에게 확장 정규식을 사용하도록 지시합니다. 이렇게 하면 특정 이스케이프 문자가 필요하지 않습니다.

  • s@old@new@정규식을 찾아 old로 바꾸는 대체 명령입니다 new.

  • 이 예에서 oldis는 .*(/s-show)임의 개수의 모든 문자와 일치하고 .*그 뒤에는 /s-showwhere가 /s-show그룹 1로 저장됩니다.

  • 이 예에서는 그룹 1 로 대체 new되었습니다 .https://www.testpage.com\1\1

관련 정보