【发布时间】:2021-09-10 03:49:59
【问题描述】:
在 bash 中,我想让 .txt 文件在第 1 行中包含链接。在第 2 行中包含数字。
curl -s "http://kodi:kodi@192.168.1.10:8080/jsonrpc?Base" -H 'Content-Type: application/json' --data '[{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]' | jq
带有jq的json文件格式
[ { "id": 17, "jsonrpc": "2.0", "result": { "time": { "hours": 2, "milliseconds": 200, "minutes": 3, "seconds": 5 } } }, { "id": 18, "jsonrpc": "2.0", "result": { "item": { "file": "plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA", "label": "FULL SHOW - Burton US Open Men's Slopestyle Semi-Finals", "type": "unknown" } } } ]
curl -s "http://kodi:kodi@192.168.1.10:8080/jsonrpc?Base" -H 'Content-Type: application/json' --data '[{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]' | jq --raw-output '.[].result.item.file, .[].result.time.hours, .[].result.time.minutes, .[].result.time.seconds | select(. != null)' > "c:\kodi\info.txt"
有了这个我可以在 info.txt 文件中得到这个格式
info.txt
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA 2 3 5
示例 2。
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA 0 11 22
示例 3。
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA 0 55 9
如何用 jq、awk、paste、sed 或类似的东西来让它看起来像这样并在每个 1-9 前面放一个 0?
example 1.
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA
020305
example 2.
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA
001122
example 3.
plugin://plugin.video.youtube/play/?video_id=rhMTZB2WJWA
005509
提前感谢您的帮助!
【问题讨论】:
-
我怀疑在 github.com/stedolan/jq/issues/1341 完成之前,仅使用 jq 可能无法做到这一点。
-
@jordanm thx 的回复实际上我可以与其他东西结合使用,例如| awk '命令' | jq '命令' | sed 'command' > .txt 与任何这些组合必须有人可以帮助我
-
您的问题中有几个文本块,请edit 它清楚地说明哪个是您的示例输入,哪个是您的预期输出。我认为最后一个块可能是预期的输出,但是文本
example 1.来自哪里,应该是来自 3 个单独文件的 3 个单独输出还是其他什么?请把它清理干净并说清楚。 -
@EdMorton 好的,抱歉,只是尽量不要错过任何东西,我会修复它
-
可以使用
printf进行这种格式设置...即` printf '%02d%02d%02d' $(printf '1\n2\n3\n' | xargs) ` 给你010203...所以,获取您在其中创建 info.txt 的流,将其通过管道传输到 xargs,然后使用这些 args 调用 printf 来格式化这些 args