Bash:以人类可读格式输出来自wc的行数

luf*_*ffe 3 macos bash wc

那可能吗?以直截了当的方式做wc我需要花费精力才能看到​​该文件包含超过4000万行:

$ wc -l 20150210.txt 
    45614736 20150210.txt
Run Code Online (Sandbox Code Playgroud)

我四处搜索并且numfmt出现了,但显然在OSX上没有(也没有brew).那么在OSX上有一个简单的方法吗?谢谢.

fed*_*qui 6

如果您有POSIX printf,您可以使用%'d:

printf "%'d\n" $(wc -l < file )
Run Code Online (Sandbox Code Playgroud)

来自man printf:

"

对于十进制转换(i,d,u,f,F,g,G),如果区域设置信息指示任何,则输出将与数千个分组字符分组.请注意,许多版本的gcc(1)无法解析此选项并将发出警告.SUSv2不包括%'F

测试

$ seq 100000 > a
$ printf "%'d\n" $(wc -l <a )
100,000
Run Code Online (Sandbox Code Playgroud)

还要注意wc -l < file获取没有文件名的数字的技巧.

  • '%'d`的输出是与语言环境相关的.`locale |的输出是什么?grep LC_NUMERIC`? (2认同)
  • 我做了`LC_NUMERIC ="en_US.UTF-8"`.现在它有效.谢谢 (2认同)