Zsh

zsh中printf中的千位分隔符

  • December 13, 2015

我一直在嘗試定義千位分隔符,printf但我發現 zsh 存在一些問題。

在 bash 我可以使用類似的東西:

$ printf "%'d\n" 1234567890
1,234,567,890

但在 zsh 中它不起作用:

$ printf "%'d\n" 1234567890
printf: %': invalid directive

我剛剛發現 coreutilsprintf會做得很好:

$/usr/bin/printf "%'d\n" 1234567890
1,234,567,890

如何在 zsh 中使用千位分隔符?

$ zsh --version
zsh 5.0.2 (x86_64-pc-linux-gnu) 

更新:從 開始zsh v. 5.1,內置支持通過/printf對數千進行分組(另'請參見此處的討論)。bash``coreutils printf


千位分隔符是zsh 不支持的 GNU 擴展,它有自己的printf內置函式,您最終會使用它。如鍊接文章中所述,您可以通過以下方式獲取依賴於語言環境的千位分隔符:

zmodload zsh/langinfo
echo $langinfo[THOUSEP]

如果您需要專門且專門使用 zsh,則可以將其與 sed 一起使用。

可能更容易使用printfGNU coreutils中的非內置函式,如果您的系統允許使用千位分隔符選項:

$ command printf "%'d\n" 1234567890
1,234,567,890

command printf告訴 shell不要使用內置命令或別名,而是在$PATH.

引用自:https://unix.stackexchange.com/questions/140316