在变量的最后一个字符之前添加空格

在变量的最后一个字符之前添加空格

我有一个包含一些数字然后一个字母的变量

示例: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

相关内容