문자열에서 마지막 "-"만 공백으로 바꾸려면 어떻게 해야 합니까 sed
?
예를 들어:
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
하지만 다음 출력을 얻고 싶습니다. (마지막 하이픈 ["-"]을 공백으로 바꾸십시오)
swp-RedHat-Linux-OS-5.5.0.0 03
답변1
다음을 사용하여 이를 수행할 수 있습니다 sed
.
sed 's/\(.*\)-/\1 /'
또는 확장 정규식을 사용하세요.
sed -r 's/(.*)-/\1 /'
요점은 욕심이 매우 많기 때문에 다른 캐릭터를 포함하여 이전 캐릭터를 최대한 많이 sed
일치시킨다는 것입니다 .-
-
$ echo 'swp-RedHat-Linux-OS-5.5.0.0-03' | sed 's/\(.*\)-/\1 /'
swp-RedHat-Linux-OS-5.5.0.0 03
답변2
다음 방법으로 이 문제를 처리할 수도 있습니다.Bash 매개변수 확장:
s=swp-RedHat-Linux-OS-5.5.0.0-03
echo ${s%-*} ${s##*-}
산출:
swp-RedHat-Linux-OS-5.5.0.0 03
답변3
더 나은 방법이 있다고 확신하지만 이와 같은 것이 나에게 효과적입니다.
echo "swp-RedHat-Linux-OS-5.5.0.0-03" | rev | sed 's/-/ /' | rev
swp-RedHat-Linux-OS-5.5.0.0 03