通过枚举动态更改键名

我想使用jq将命令ps -Ao comm,pmem --sort=-pmem | head -n 6的输出解析为JSON。

我目前的一线是

ps -Ao comm,pmem --sort=-pmem | head -n 6 | jq -sR '[sub("\n$";"") | splits("\n") | sub("^ +";"") | [splits(" +")]] | .[0] as $header | .[1:] | [.[] | [. as $x | range($header | length) | {"key": $header[.],"value": $x[.]}] | from_entries]'

输出很好,但是键只是ps命令的列名。我希望每个条目都有一个动态名称,例如COMMAND_1,COMMAND_2 ...%MEM_1,%MEM_2等

gwg81 回答:通过枚举动态更改键名

解决方案可以用nl来对行进行计数

然后使用第一列0计算密钥名称。

 ps -Ao comm,pmem --sort=-pmem | head -n 6 | nl -s' '  -v0 | \
 jq -sR '[sub("\n$";"") | splits("\n") | sub("^ +";"") | [splits(" +")]] | .[0] \
        as $header | .[1:] | [.[] | [. as $x | \
        range( 1 ; ( $header | length ) ) |  \
        {"key": ($header[.]+"_"+($x[0]|tostring)),"value": $x[.]} ] | from_entries ]'
本文链接:https://www.f2er.com/3144027.html

大家都在问