입력 문자열인 문자열이 있고 ./y1563/y1563.xls
이를 문자열 출력으로 변환하고 싶습니다 y1563/y1563.txt
.
답변1
일반적으로 sed
기존 문자열(귀하의 의견을 바탕으로) 쉘 변수에 있습니다. 적어도 문자열의 접미사를 제거 및/또는 교체하려는 경우에는 그렇지 않습니다.
대신에,
NAME=./y1563/y1563.xls
NAME=${NAME%.xls}.txt # remove .xls suffix, append .txt suffix
NAME=${NAME#./} # remove ./ prefix (this may not be needed)
이들 ( ${variable%pattern}
과 ${variable#pattern}
)은표준변수 대체변수 값에서 접미사 및 접두사 문자열을 제거합니다.
$NAME
값에 개행 문자가 포함되어 있어도 잘 작동합니다. 파일 이름에 줄바꿈이 허용되지만 sed
편집기는 줄 중심이므로 이러한 입력을 올바르게 처리하지 못합니다.