sed -e '/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]*$/ s%/%%g'
끔찍한 패턴, 라인의 시작을 0 개 이상의 비 슬래시의 순서를 본다 그 다음에 슬래시, 비 슬래시 및 두 번째 슬래시, 더 많은 비 슬래시 및 세 번째 슬래시, 더 많은 슬래시 및 줄 끝이옵니다. 그와 일치하는 행에서 전역으로는 대 체를 사용하지 마십시오.
정규 표현식을 작성하는 다른 방법이 있지만 상당히 명확하지는 않습니다. 이것은 거의 모든 버전의 sed
에서 작동합니다. 그래서 것이 :
것 같습니다
sed -e '/^\([^\/]*\/\)\{3\}[^\/]*$/ s%/%%g'
라인의 시작을위한, (슬래시 다음에 0 개 이상의 비 슬래시), 0 개 이상의 비 슬래시 라인의 끝의 3 대.
sed
에 확장 정규 표현식 (예 : GNU sed
)이있는 경우 표기법의 편의를 얻을 수 있습니다.
sed -r -e '/^([^\/]*\/){3}[^\/]*$/ s%/%%g'
sed -r -e 's%^([^/]*)/([^/]*)/([^/]*)/([^/]*)$%\1\2\3\4%'
후자는 '0 개 이상의 슬래시가 아닌'세트를 캡처하여 함께 붙여 붙여 교체합니다. 확장되지 않은 정규식을 사용하여이를 작성할 수는 있지만 이전보다 백 슬래시가 더 많이 포함됩니다.
안녕하세요 프로그래머에 오신 것을 환영합니다. 구현 관련 질문은 주제와 관련이 없습니다. 이 질문은 Stack Overflow에 관한 주제이지만 이미 게시 한 것 같습니다. 제발 크로스 포스트하지 마. 즐거운 하루 되세요. –
'/ opt/hal/9000/monitor'와 같이 4 줄 이상의 슬래시가있는 샘플 라인이 있어야합니다. 그것은 또한 변하지 않게 남겨 두어야한다. –