回答:
あなたは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のパラメーター拡張ソリューションか、何か他のものが必要です。