파일 이름과 포함 디렉터리를 가져오기 위해 oneliner를 sed합니다.

파일 이름과 포함 디렉터리를 가져오기 위해 oneliner를 sed합니다.

전체 경로(DOS 구문)에서 파일 이름과 포함 디렉터리를 추출해야 합니다. 더 큰 정규 표현식의 일부이므로 sed를 사용하여 이 작업을 수행해야 합니다.

입력 예: ..\home\test\somedir\anotherdir\myfile.txt

예상 출력: anotherdir\myfile.txt

어떤 도움이라도 대단히 감사하겠습니다.

감사해요

답변1

그냥 체계적으로 진행하세요. 한 줄을 임의의 접두사 .*, 백슬래시 두 개, 백슬래시가 아닌 문자 등 세 부분으로 나누고 싶습니다 \\[^\\]*. 마지막에서 두 번째 백슬래시 뒤의 내용을 캡처하고 나머지는 삭제합니다.

printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'

(일부 쉘은 백슬래시를 확장하므로 주의하십시오 echo.)

답변2

awk를 사용하지 않는 특별한 이유가 있나요?

echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'

관련 정보