교체 찾기 및 문자열 확장자 추가

교체 찾기 및 문자열 확장자 추가

sed안녕하세요. 다음 작업 에 사용하고 싶습니다 .

나는 호출된 쉘 변수를 가지고 tor=hello:there/you/are/here있고 이 쉘 변수를 다음과 같이 밑줄이 있는 파일 이름으로 변환하는 데 필요한 곳에 밑줄을 추가했습니다.

sed -e 's/[^A-Za-z0-9._-]/_/g' <<< $tor

결과는 다음과 같습니다.

hello_there_you_are_here

하지만 다음과 같은 확장을 추가하고 싶습니다.

hello_there_you_are_here.sif

줄 끝에 sed 확장자를 추가하는 방법은 무엇입니까?

답변1

사용자 fpmurphy가 의견에서 지적한 것처럼 Sed에 "줄 끝을 일치시키고 거기에 입력"이라는 "코드 줄"을 추가하기만 하면 됩니다 .sif. "코드 줄"이 추가 -e되었으므로

sed -e 's/[^[:alnum:].-]/_/g' -e 's/$/.sif/' <<< "$tor"

일부 수정을 하였으니 참고해주시기 바랍니다. 항상 변수 확장을 인용하고 "$tor"대신 $tor을 사용하십시오.좋은 연습, 현재 경우에는 실제로 필요하지 않지만 Bash는 여기서 문자열에 대해 토큰화 또는 ​​와일드카드를 수행하지 않기 때문입니다. 또한 [:alnum:]표준 로케일과 일치하는 POSIX 클래스이므로 [A-Za-z0-9]더 안정적입니다. 예를 들어왜 "문자 클래스"가 "문자 범위"보다 우선해야 합니까?, 하지만 이것을 작은 참고 사항으로 남겨 두십시오.

관련 정보