文字列の最後の "-"だけをスペースに置き換えるにはどうすればよいですか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