"" echo $PWD | s?.*users/[^/]\+/??'란 무엇입니까?

"" echo $PWD | s?.*users/[^/]\+/??'란 무엇입니까?

무엇인가요

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.

관련 정보