数字と文字を含む変数があります。
例: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