문자열에서 마지막으로 나타나는 “-“만 공백으로 바꾸려면 어떻게합니까 sed
?
예를 들면 다음과 같습니다.
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
그러나 다음과 같은 결과를 얻고 싶습니다 (마지막 하이픈 [“-“]을 공백으로 바꿈)
swp-RedHat-Linux-OS-5.5.0.0 03
답변
싱글로 할 수 있습니다 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
답변
bash 매개 변수 확장으로 이것을 처리 할 수도 있습니다 .
s=swp-RedHat-Linux-OS-5.5.0.0-03
echo ${s%-*} ${s##*-}
산출:
swp-RedHat-Linux-OS-5.5.0.0 03
답변
더 좋은 방법이 있다고 확신하지만 이와 같은 것이 나를 위해 일했습니다.
echo "swp-RedHat-Linux-OS-5.5.0.0-03" | rev | sed 's/-/ /' | rev
swp-RedHat-Linux-OS-5.5.0.0 03