変数の最後の文字の前にスペースを追加する

変数の最後の文字の前にスペースを追加する

数字と文字を含む変数があります。

例:242M

エコーされると、242Mのように見えるように、この変数の最後の文字の前にスペースを追加する必要があります。

sedを使ってみましたが、私が見つけたところによると、ファイルからの読み込みにのみ使用でき、変数の変更には使用できないようです。

ありがとうございます!

答え1

このバージョンは、以下のすべてのPOSIXシェルで動作しますbash

printf '%s\n' "${a%?} ${a#"${a%?}"}"

内部の追加引用符は、${a#...}特殊文字が変数に表示されるのを防ぐためのものです。

$ a='10*M'; printf '%s\n' "${a%?} ${a#"${a%?}"}"
10* M

これがなければ、2番目の変数拡張はになり、${a#10*}エコーさ10* *Mれます。

答え2

他の答えがうまくいかない場合(macOSなど)、試してみることもできます。

a="${a%?} ${a: -1}"

すべて一緒に結合aには最後の文字はありません、スペースとaの最後の文字

答え3

純粋にシェル内で:

var=${var:0:-1}' '${var: -1:1}

たとえば、

$ var=jeff
$ var=${var:0:-1}' '${var: -1:1}
$ printf '%s\n' "$var"
jef f

答え4

以下は、変数を使用するSedの例です。

q=242M
sed 's/.$/ &/' <<eof
$q
eof

関連情報