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