jq - 拾取后追加元素

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

系统信息

jq:1.7

选择

  • 以下命令按预期正常工作:
jq 'pick(.id,.title,.webpage_url,.channel,.duration_string,.upload_date)' *.info.json
{
  "id": "uO8Sn0Xch1s",
  "title": "A transformative new way of classifying foods 🍔🍕🍟 BBC",
  "webpage_url": "https://www.youtube.com/watch?v=uO8Sn0Xch1s",
  "channel": "BBC",
  "duration_string": "4:19",
  "upload_date": "20210701"
}

选择并追加

$ Date=$(date +%Y-%m-%d)
$ jq 'pick(.id,.title,.webpage_url,.channel,.duration_string,.upload_date)' *.info.json \
  | jq --arg Date="$Date" '. += {"date": $Date}'
{
  "id": "uO8Sn0Xch1s",
  "title": "A transformative new way of classifying foods 🍔🍕🍟 BBC",
  "webpage_url": "https://www.youtube.com/watch?v=uO8Sn0Xch1s",
  "channel": "BBC",
  "duration_string": "4:19",
  "upload_date": "20210701"
}

问题

  1. “挑选”和“追加”产生与“挑选”相同的输出,但不追加日期。为什么以及如何纠正这个问题?
  2. 还尝试了 + 而不是 +=,两者都不起作用(但应该按照参考文献 2 工作)

预期产出

{
  "id": "uO8Sn0Xch1s",
  "title": "A transformative new way of classifying foods 🍔🍕🍟 BBC",
  "webpage_url": "https://www.youtube.com/watch?v=uO8Sn0Xch1s",
  "channel": "BBC",
  "duration_string": "4:19",
  "upload_date": "20210701",
  "date": "2024-05-10"
}

参考

json append jq
1个回答
0
投票

$ Date=$(date +%Y-%m-%d) $ jq 'pick(.id,.title,.webpage_url,.channel,.duration_string,.upload_date)' *.info.json \ | jq --arg Date="$Date" '. += {"date": $Date}'

基于上述建议,以下更简洁
  • jq --arg Date "$Date" 'pick(.id,.title,.webpage_url,.channel,.duration_string,.upload_date) + {"date": $Date}' *.info.json
© www.soinside.com 2019 - 2024. All rights reserved.