【问题标题】:jq output into a non json list to use for a loopjq 输出到非 json 列表中以用于循环
【发布时间】:2022-01-18 17:13:34
【问题描述】:

我确定有人问过这个问题,但我已经搜索并找不到任何可以回答我的问题的东西...

我正在寻找一种简单的方法将 json 列表输出为非 json 列表以使用 while 循环进行处理。这意味着我需要去掉引号、逗号和括号。我知道我可以用cut 但我确定我错过了一种更简单的方法..

假设我正在使用 aws 命令获取资源列表,然后我想在 while 循环中处理该列表...

aws eks list-clusters | jq .clusters | while read cluster; do something; done

类似的东西..我在这里是愚蠢的吗?

【问题讨论】:

    标签: json shell jq


    【解决方案1】:

    使用[] 将列表变成一系列单独的字符串,使用--raw-output / -r 输出不带引号的字符串:

    使用此选项,如果过滤器的结果是字符串,那么它将直接写入标准输出,而不是格式化为带引号的 JSON 字符串。这对于让 jq 过滤器与非基于 JSON 的系统对话很有用。

    aws eks list-clusters | jq -r '.clusters[]' | while read cluster; do something; done
    

    【讨论】:

    • 完美,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2018-08-26
    • 2019-02-08
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多