は、私はこのような文字列があります。bash:文字列にスペースを追加するには?
string="aaa-bbb"
をしかし、私は、charの前にスペースを追加する「 - 」ので、私はこれ欲しい:私は多くのことを試してみましたが、私ができる
aaa -bbb
そこにスペースを追加しないでください。 4.3.8は、(1)
は、私はこのような文字列があります。bash:文字列にスペースを追加するには?
string="aaa-bbb"
をしかし、私は、charの前にスペースを追加する「 - 」ので、私はこれ欲しい:私は多くのことを試してみましたが、私ができる
aaa -bbb
そこにスペースを追加しないでください。 4.3.8は、(1)
、sed
を呼び出すBASHでstring substitutionネイティブを使用する必要はありません:
$ foo="abc-def-ghi"
$ echo "${foo//-/ -}"
abc -def -ghi
注2つのスラッシュ、変数名の後:最初のスラッシュは最初のオカレンスを置き換えます。ここでは2つのスラッシュがすべてのオカレンスを置き換えます。
はこれに試してみてはGNU bashのバージョン:
は、私がLinuxのミントを持っている...私はecho $string | tr '-' ' -'
、およびいくつかの他のものを試してみましたが、それはうまくいきませんでした
printf "%s\n" "${string}" | sed 's/-/ -/g'
それは-
を探して-
(スペースハイフン)と交換してください
tr
は、一度に1つの文字を置き換えることができます。あなたが探していることはsed
です:
echo "$string" | sed 's/-/ -/'
Bashには文字列置換が組み込まれています。
result="${string/-/ -}"
echo "$result"
別の方法としては、sed
を使用することができます。
result=$(echo "$string" | sed 's/-/ -/')
echo "$result"
あなたは非引用された変数$string
をエコーするためにシェルを求めています。
それが起こる、変数の内部空間は、文字列を分割するために使用されています
$ string="a -b -c"
$ printf '<%s>\n' $string
<a>
<-b>
<-c>
変数は、あなたがそれを正しく表示されないだけという、スペースを含みません。 Quote your expansions
$ printf '<%s>\n' "$string"
<a -b -c>
あなたの変数は、多くのソリューションがある-
に-
から変更を取得するには、次のsed
:string="$(echo "$string" | sed 's/-/ -/g')"; echo "$string"
のbash:string="${string//-/ -}; echo "$string"