我有一个包含一些数字然后一个字母的变量
示例:242M
我需要在该变量的最后一个字符之前添加一个空格,以便在 echo 时它看起来像 242 M
我尝试过 sed,但从我发现的情况看来,它只能用于从文件中读取,而且我无法让它修改变量。
谢谢!
答案1
该版本应该适用于任何 POSIX shell,而不仅仅是bash
:
printf '%s\n' "${a%?} ${a#"${a%?}"}"
里面额外的引号${a#...}
是为了防止变量中出现特殊字符:
$ a='10*M'; printf '%s\n' "${a%?} ${a#"${a%?}"}"
10* M
如果没有它们,第二个变量扩展将变成${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