Zsh
zsh中printf中的千位分隔符
我一直在嘗試定義千位分隔符,
printf
但我發現 zsh 存在一些問題。在 bash 我可以使用類似的東西:
$ printf "%'d\n" 1234567890 1,234,567,890
但在 zsh 中它不起作用:
$ printf "%'d\n" 1234567890 printf: %': invalid directive
我剛剛發現 coreutils
printf
會做得很好:$/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 一起使用。
可能更容易使用
printf
GNU coreutils中的非內置函式,如果您的系統允許使用千位分隔符選項:$ command printf "%'d\n" 1234567890 1,234,567,890
command printf
告訴 shell不要使用內置命令或別名,而是在$PATH
.