使用 jq json cli 以千位分隔符格式化数字

Gut*_*nYe 7 formatting json integer jq

鉴于{"a": 1234567890},我想1,234,567,890在结果中,如何使用 jq 来完成此操作

echo '{"a": 1234567890}' | jq '.a | FORMAT?'
Run Code Online (Sandbox Code Playgroud)

感谢@peak的回答,解决方案是

echo '{"a": 1234567890}' | jq -r 'def h: [while(length>0; .[:-3]) | .[-3:]] | reverse | join(","); .a | tostring | h'
//-> 1,234,567,890
Run Code Online (Sandbox Code Playgroud)

pea*_*eak 8

这是一个惯用的单行定义:

def h: tostring | [while(length>0; .[:-3]) | .[-3:]] | reverse | join(",");
Run Code Online (Sandbox Code Playgroud)

例子

12, 123, 1234, 12345678 | h
Run Code Online (Sandbox Code Playgroud)

输出(使用 -r 选项):

12
123
1,234
12,345,678
Run Code Online (Sandbox Code Playgroud)