jq 在输出中打印字符

2023-12-11

我要打印"/"输出标题内的分隔符。

curl  -s http://cd0a4a.ethosdistro.com/?json=yes \
    | jq -c '.rigs|."0d6b27",."50dc35"|[.version,.driver,.miner,"\(.gpus)\(.miner_instance)"]|@csv' \
    | sed 's/\\//g;s/\"//g' \
    | gawk 'BEGIN{print  "version" "," "GPU_driver" "," "miner" "," "gpu"} {print $0}' \
    | csvlook -I

输出是这样的:

| version | GPU_driver | miner    | gpu |
| ------- | ---------- | -------- | --- |
| 1.2.3   | nvidia     | ethminer | 22  |
| 1.2.4   | amdgpu     | ethminer | 11  |

但我希望 GPU 标题内的数字之间有分隔符,如下所示:

| version | GPU_driver | miner    | gpu  |
| ------- | ---------- | -------- | ---- |
| 1.2.3   | nvidia     | ethminer | 2/2  |
| 1.2.4   | amdgpu     | ethminer | 1/1  |

您只是为了处理数据而进行了大量不必要的调用。您的命令可以大大简化。

  • 您不需要显式键入.rigs对象来获取它们的值,您可以使用以下方式访问它们[].
  • 您不需要 sed 调用来去掉引号,只需使用原始输出-r.
  • 您不需要 awk 调用来添加标头,您只需从 jq 输出附加行即可。

所以你的命令变成这样:

$ curl -s http://cd0a4a.ethosdistro.com/?json=yes \
| jq -r '["version", "GPU_driver", "miner", "gpu"],
         (.rigs[] | [.version, .driver, .miner, "\(.gpus)/\(.miner_instance)"])
             | @csv' \
| csvlook -I
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq 在输出中打印字符 的相关文章

随机推荐