URL에서 슬래시 바꾸기

URL에서 슬래시 바꾸기

웹 주소의 모든 슬래시를 바꾸고 싶습니다.

예시 주소:https://example.com/sub/folder/files/file.txt

예상 결과:example.com-하위 폴더-파일-file.txt

https를 제거할 수 있지만 나머지 슬래시를 다음으로 바꿀 수 없는 것 같습니다.

echo $(echo 'https://example.com/sub/folder/files/file.txt' | sed 's/http[s]*:\/\///')

위의 내용은 나에게 이것만 제공합니다.

example.com/sub/folder/files/file.txt

슬래시를 대체하기 위해 두 번째 sed를 추가하면 처음 발생한 슬래시만 제거됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

이 시도:

echo "https://www.example.com/sub/folder/files/file.txt" | sed -e 's#http[s]://##' -e 's#/#-#g'

결과는 다음과 같습니다: www.example.com-sub-folder-files-file.txt

'처음 발생한' 항목만 바꾸는 이유는 sed에 전달된 마지막 '매개변수'로 g가 누락되었기 때문입니다. 이는 전역을 나타내며 발견된 모든 인스턴스를 원하는 대체 항목으로 바꿀 것입니다. 첫 번째 인스턴스가 발견되었습니다.

또한 sed 명령의 매개변수를 임의의 기호로 분리할 수 있다는 점은 주목할 가치가 있습니다. '/' 일 필요는 없습니다. 검색 및 바꾸기에 전혀 포함되지 않은 기호를 사용하는 것을 선호합니다. 이스케이프 문자가 있고 /를 바꿀 때 잠재적인 버그가 있습니다.

또한 -e 옵션을 사용하여 sed에서 몇 가지 명령을 함께 묶을 수 있습니다. 위에서 볼 수 있듯이 'https://'를 아무것도 없는 것으로 바꾼 다음(제거) 모든 '/'를 '-'로 바꿨습니다. 쉽게 쉽게.

그것이 당신에게 도움이 되기를 바랍니다

답변2

double 이 필요하지 않습니다 echo.

무슨 말인지 이해가 안 돼요슬래시를 대체하기 위해 두 번째 sed를 추가하면 처음 발생한 슬래시만 제거됩니다.sed - 귀하의 예에는 명령이 하나만 있습니다 . sed 다음과 같은 두 가지 명령 으로 원하는 작업을 쉽게 수행할 수 있습니다 .

echo 'https://example.com/sub/folder/files/file.txt' | sed 's,http[s]*:\/\/,,;s,/,-,g'

관련 정보