내 경로에서 첫 번째 ./와 뒤따르는 /를 어떻게 제거합니까?
이제 내 코드는 다음과 같습니다.
sed -i 's/dir2\/file-example.json//' test.sh
다음과 같이 인쇄됩니다.
./dir1/
하지만 나는 이것을 원한다:
dir1
이렇게 하면 처음과 끝에서 ./ 및 /를 제거하고 디렉터리 이름만 남깁니다.
가능합니까?
답변1
정규식 구분 기호로 사용할 필요는 없지만 /
"다른 단일 문자"로 대체할 수 있습니다. 이를 이스케이프 처리하세요. info sed
:
'\%REGEXP%' ('%'는 다른 단일 문자로 대체될 수 있습니다.)
This also matches the regular expression REGEXP, but allows one to use a different delimiter than '/'.
대체 명령 에서는 s
도망갈 필요도 없습니다. 노력하다
sed -i 's%\./%%; s%/dir2/file-example.json%%;' test.sh
정규 표현식에서 점의 특별한 의미를 끄려면 점도 이스케이프 처리해야 합니다.
"역참조"를 사용하면 훨씬 더 간단해질 수 있습니다.
sed -i 's%\./\(dir1\)/dir2/file-example.json%\1%;' test.sh
이는 \1
괄호로 묶인 첫 번째 부분 정규식(여기서는 dir1)을 다시 참조합니다.