무엇인가요
echo $PWD | sed 's?.*users/[^/]\+/??'
여기서 PWD는 경로입니다.
/proj/SAM1/users/ssudi/SAm/VELOCE/ML3P8/trunk
이 명령은 정확히 무엇을 sed
수행하며 s?.*users/[^/]\+/??
어떻게 작동합니까?
답변1
s?.*users/[^/]\+/??
분석은 다음과 같습니다.
s
명령이다치환?
(세 가지 모두) 표현식입니다.구분 기호(그래서 위의 내용도 이렇게 보일 수 있습니다 :)s@.*users/[^/]\+/@@
. 일반적인 형식은 다음과 같습니다.s/<match pattern>/<replacement>/<modifiers>
. 이 경우 이 대체에는 수정자와 대체가 없으므로 첫 번째 패턴에서 발견된 모든 항목이 스트림에서 제거됩니다..*users/[^/]\+/
검색 모드입니다. 의미는 다음과 같습니다..*
앞으로 무슨 일이 있어도users/
[^/]\+/
이것들 뒤에는 그렇지 않은 것\
(적어도 하나, 아마도 그 이상)이 오고, 그 뒤에는/
.
users
따라서 대상은 하위 폴더로 시작 하고 그 뒤에 하위 폴더가 이어지는 경로의 문자열입니다 ./subfolder/
.
그럼 남은 것은 이렇습니다.
SAm/VELOCE/ML3P8/trunk
삭제된 부분은 다음과 같습니다.
/proj/SAM1/users/ssudi/
/proj/SAM1/
이전 users/
, 이후 ssudi
.