shell - 如何让 printf 生成 "+ 123"而不是 "+123"?

标签 shell printf sign gnu-coreutils format-string

我想打印一个具有特定数字字段宽度的数字,使数字右对齐,并打印符号指示符 - 不是在数字之前,而是在间距之前。因此

$ magic -123 7 
-   123

而不是

$ magic -123 7 
   -123

我可以使用 GNU coreutils 版本的 printf 实用程序来做到这一点吗?也许是其他版本?

注意:需要明确的是,该解决方案应该适用于任何字段间距和任何值,例如:

  • 可能有零个、一个或多个空格
  • 数字可能会“溢出”指定的宽度

最佳答案

简单地转换输出:

printf %+d 12 | sed 's/[+-]/\0 /'
+ 12

关于shell - 如何让 printf 生成 "+ 123"而不是 "+123"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002653/

相关文章:

shell - 在文件中查找和替换并覆盖文件不起作用,它会清空文件

shell - 伯恩 : if statement testing exit status

python - conda 和 python shell 脚本

c - C 语言中的 printf 函数是如何工作的?

java - Java 十六进制数中的问题

linux - 不使用通配符的预期工具不匹配换行符

c++ - 有没有 printf 的替代品?

c - uint16_t 与 printf 的值差异

android - 我在签名时似乎无法构建我的android应用程序

c# - SignedXml 报告 "Unknown transform has been encountered."