【问题标题】:YQ/JQ special characters query convertor [duplicate]YQ/JQ特殊字符查询转换器[重复]
【发布时间】:2020-10-12 10:43:31
【问题描述】:

我将 yq 与 jq 一起使用,据我所知,您需要将键中的特殊字符“转义”到引号和括号中。 我想使用纯点语法 .cars.big-trucks 查询数据,但我找不到任何可以为我进行转换的工具。

我的理想用法是:

query=$(jq-query-convert ".cars.big-trucks")
yq -r $query cars.yaml

有什么想法吗?谢谢

示例 yaml 文件:

%YAML 1.1
---

cars:
    big-trucks: 42

对于 jq 用户,一个示例 json 将是:

{
 "cars": {
  "big-trucks": 42
 }
}

查询者

cat cars.json | jq "$q"

【问题讨论】:

  • @Inian 问题已编辑,我添加了示例文件但也回答了我的问题。
  • 你需要使用jq '.cars."big-trucks"',即在双引号下加上-这个词
  • 我不是在询问如何转义查询字符串,而是询问它的工具。我已经编写了python脚本,到目前为止对我来说已经足够了。

标签: bash jq yq


【解决方案1】:

嗯,到目前为止,我想出了这个 python3 单线,但如果有人知道更强大的解决方案,我很乐意接受它。

python3 -c 'from sys import argv; print("." + argv[1].replace(".", "\"][\"")[2:] + "\"]")' ".cars.big-trucks"

返回
.["汽车"]["大卡车"]

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 2017-05-30
    • 2011-09-02
    • 1970-01-01
    • 2017-11-25
    • 2022-01-19
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    相关资源
    最近更新 更多