在 jq 中运行外部命令来操作特定键的每个值

问题描述 投票:0回答:1

我有一个像这样的json

[
  {
    "url": "https://drive.google.com/file/d/1tO-qVknlH0PLK9CblQsyd568ZiptdKff/view?usp=share_link",
    "title": "– Flexibility"
  },
  {
    "url": "https://drive.google.com/open?id=11_sR8X13lmPcvlT3POfMW3044f3wZdra",
    "title": "– Pronouns"
  }
]

我用

curl -Lfs "https://motivatedsisters.com/2019/07/08/arabic-review-sr-rahat-basit/" | rg -o '<li>.*?href="(.*?)".*?</a> (.*?)<\/li>' -r '{"url": "$1", "title": "$2"}' | jq -s '.'
得到了它。

我的机器中有一个名为

unescape_html
的命令,这是一个用于对 html 进行转义的 python 脚本(用适当的字符替换 – )。

如何使用

jq
在每个标题上应用此功能。

例如:

我想跑步:

unescape_html "&#8211; Flexibility"
unescape_html "&#8211; Pronouns"

预期输出是:

[
  {
    "url": "https://drive.google.com/file/d/1tO-qVknlH0PLK9CblQsyd568ZiptdKff/view?usp=share_link",
    "title": "– Flexibility"
  },
  {
    "url": "https://drive.google.com/open?id=11_sR8X13lmPcvlT3POfMW3044f3wZdra",
    "title": "– Pronouns"
  }
]
jq
1个回答
0
投票

JQ 没有该功能,但如果您需要的话,它可以将代码点转换为字符。例如:

.[].title |=
  gsub("&#(?<cp>\\d+);"; [.cp | tonumber] | implode)

在线演示

© www.soinside.com 2019 - 2024. All rights reserved.