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]
더 안정적입니다. 예를 들어왜 "문자 클래스"가 "문자 범위"보다 우선해야 합니까?, 하지만 이것을 작은 참고 사항으로 남겨 두십시오.