为JQ中的值分配键

发布于 2025-02-05 19:24:55 字数 406 浏览 2 评论 0原文

JQ有没有办法从这个Stdout进行:

Thu Jun 9 10:09:14 AM EDT 2022IP86.75.30.9

对此?:

{
    "date": "Thu Jun 9 10:09:14 AM EDT 2022",
    "ip": "86.75.30.9"
}

我能够以此

为目标:

echo $(date)IP$(myip.sh) | jq -R 'split("IP")'

输出此信息:

[
  "Thu Jun 9 10:09:14 AM EDT 2022",
  "86.75.30.9"
]

谢谢!

Is there a way in jq to go from this stdout:

Thu Jun 9 10:09:14 AM EDT 2022IP86.75.30.9

to this?:

{
    "date": "Thu Jun 9 10:09:14 AM EDT 2022",
    "ip": "86.75.30.9"
}

I was able to get part of the way there

with this:

echo $(date)IP$(myip.sh) | jq -R 'split("IP")'

that outputs this:

[
  "Thu Jun 9 10:09:14 AM EDT 2022",
  "86.75.30.9"
]

thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

随心而道 2025-02-12 19:24:56

您可以使用dateip键创建一个对象,其中您将相应地分配第一个和第二个索引:

split("IP") | { date: .[0], ip: .[1] }

将产生

{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}

在线示例

You can create an object with the date and ip key in which you'll assign the first and second index accordingly:

split("IP") | { date: .[0], ip: .[1] }

Will produce

{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}

Online example
久光 2025-02-12 19:24:56

使用捕获可能会派上用场:

jq -R 'capture("(?<date>.*)IP(?<ip>.*)")'
{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}

demo

Using capture might come in handy:

jq -R 'capture("(?<date>.*)IP(?<ip>.*)")'
{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}

Demo

老旧海报 2025-02-12 19:24:56

混合 jq with shell参数扩展

line='Thu Jun 9 10:09:14 AM EDT 2022IP86.75.30.9'
jq -n --arg date "${line%IP*}" --arg ip "${line#*IP}" '$ARGS.named'
{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}

Mixing with Shell Parameter Expansion:

line='Thu Jun 9 10:09:14 AM EDT 2022IP86.75.30.9'
jq -n --arg date "${line%IP*}" --arg ip "${line#*IP}" '$ARGS.named'
{
  "date": "Thu Jun 9 10:09:14 AM EDT 2022",
  "ip": "86.75.30.9"
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文