Json 如何用JQ填充数字?
我想给数字中的字符串添加前导/尾随零-结果字符串需要包含“01”或“001”,而不是“1”。我注意到项目Json 如何用JQ填充数字?,json,jq,zero-padding,Json,Jq,Zero Padding,我想给数字中的字符串添加前导/尾随零-结果字符串需要包含“01”或“001”,而不是“1”。我注意到项目https://github.com/joelpurra/jq-zeros但是我已经从package manager(dnf,fedora)安装了jq,所以一些jqnpm的要求对我来说是不可行的(乍一看),更不用说我对npm的恐惧了,因为stuffsudo npm-g已经多次破坏了我的系统 问题: jq的这些包经理,他们是否正在被主流接受 填充本身-如何在没有这个额外库的情况下进行填充 鉴于此
https://github.com/joelpurra/jq-zeros
但是我已经从package manager(dnf,fedora)安装了jq,所以一些jqnpm
的要求对我来说是不可行的(乍一看),更不用说我对npm的恐惧了,因为stuffsudo npm-g
已经多次破坏了我的系统
问题:
鉴于此JSON文档:
7
您可以使用以下过滤器实现“007”
:(或“042”
使用42
)
tostring
将7
转换为“7”
”
,否则设置为“0”*(3-长度)
。(当一个字符串乘以一个数字时,它会重复多次,例如,“foo”*3
->“foooo”
)您可以在过滤器的开头定义这些函数,或者将其添加到
~/.jq
文件中,然后使用它填充数字
def pad_left($len; $chr):
(tostring | length) as $l
| "\($chr * ([$len - $l, 0] | max) // "")\(.)"
;
def pad_left($len):
pad_left($len; " ")
;
然后使用它用三个0
s填充值:
pad_left(3; "0")
根据jq-esque的定义: 至于jq模块经理,jq的官方开发管道中没有任何内容,但jqnpm与npm无关,而且使用起来非常安全,至少如果您不使用sudo的话
pad_left(3; "0")
def lpad(n):
tostring
| if (n > length) then ((n - length) * "0") + . else . end;