回答:
あなたはsingleでそれを行うことができます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
sed -r。
sed -r 's/(.*)-(.*)-/\1 \2 /')。
これを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
bashパラメータ拡張機能の評価を示していbashます。これは、OPが使用している場合でもうまく機能します。読みやすさ(非常に冗長になるまで)と適切なツールの使用との間には微妙なバランスがありますが、多くの場合、適切なツールを使用しない方が優先されます。
sedパターンマッチをサポートしていません。その場合、それperl -pne 's/(.*)-/$1 /'か、@ Thorのパラメーター拡張ソリューションか、何か他のものが必要です。