我想在输出标题中打印 "/"
分隔符。
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
关于json - jq 在输出中打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430810/