sed를 사용하여 시작과 끝을 삭제하는 방법은 무엇입니까?

sed를 사용하여 시작과 끝을 삭제하는 방법은 무엇입니까?

내 경로에서 첫 번째 ./와 뒤따르는 /를 어떻게 제거합니까?

이제 내 코드는 다음과 같습니다.

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)을 다시 참조합니다.

관련 정보