Mar*_*cha 2 json jq zero-padding
我想从数字向字符串添加前导/尾随零 - 结果字符串需要包含“01”或“001”而不是“1”。我注意到了项目,https://github.com/joelpurra/jq-zeros但我从包管理器(dnf、fedora)安装了 jq,所以一些要求jqnpm对我来说是不可行的(乍一看),更不用说我对 npm 的恐惧,因为这些东西sudo npm -g已经多次破坏了我的系统。
题:
基于In jq 中的 jq 式定义,如何让 tonumber 输出小数而不是科学记数法:
\ndef lpad(n):\n tostring\n | if (n > length) then ((n - length) * "0") + . else . end;\nRun Code Online (Sandbox Code Playgroud)\n至于jq模块管理器,jq\xe2\x80\x99s官方开发管道中没有任何内容,但jqnpm与npm无关,并且使用起来相当安全,至少如果你不运行它\xe2\x80\x99与须藤。
\n您可以在过滤器的开头定义这些函数,或者将其添加到~/.jq文件中,然后使用它来填充数字。
def pad_left($len; $chr):
(tostring | length) as $l
| "\($chr * ([$len - $l, 0] | max) // "")\(.)"
;
def pad_left($len):
pad_left($len; " ")
;
Run Code Online (Sandbox Code Playgroud)
然后使用它用三个0s填充您的值:
pad_left(3; "0")
Run Code Online (Sandbox Code Playgroud)
给定这个 JSON 文档:
7
Run Code Online (Sandbox Code Playgroud)
您可以"007"使用以下过滤器来实现:(或"042"使用42)
tostring | (length | if . >= 3 then "" else "0" * (3 - .) end) as $padding | "\($padding)\(.)"
Run Code Online (Sandbox Code Playgroud)
tostring转换7为"7"""否则设置为"0" * (3 - length)。(当一个字符串乘以一个数字时,它会重复多次,例如"foo" * 3-> "foofoofoo")| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |