sed를 사용하여 문자열에서 마지막 문자를 바꾸는 방법은 무엇입니까?

sed를 사용하여 문자열에서 마지막 문자를 바꾸는 방법은 무엇입니까?

문자열에서 마지막 "-"만 공백으로 바꾸려면 어떻게 해야 합니까 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

관련 정보