【问题标题】:What is the jq equivalent for the slurp option?slurp 选项的 jq 等效项是什么?
【发布时间】:2018-07-02 09:06:15
【问题描述】:

这会生成一个数组列表:

$ echo -e "a 1\nb 2" | jq -R 'split(" ")'
[
  "a",
  "1"
]
[
  "b",
  "2"
]

当我输入数据时,我得到一个数组:

$ echo -e "a 1\nb 2" | jq -R 'split(" ")' | jq -s .
[
  [
    "a",
    "1"
  ],
  [
    "b",
    "2"
  ]
]

但是当我尝试将列表转换为数组而不使用它时,我得到的是数组列表而不是单个数组:

$ echo -e "a 1\nb 2" | jq -R '[split(" ")]'
[
  [
    "a",
    "1"
  ]
]
[
  [
    "b",
    "2"
  ]
]

是否可以在不将结果通过管道传送到 jq 的新实例的情况下将 split 的结果啜饮?

【问题讨论】:

标签: jq collect


【解决方案1】:

inputs 出现之前,问题的答案是“否”。使用 inputs 和 -n 命令行选项:

$ echo -e "a 1\nb 2" | jq -nR '[inputs|split(" ")]' 
[
  [
    "a",
    "1"
  ],
  [
    "b",
    "2"
  ]
]

【讨论】:

    【解决方案2】:

    double split:

    echo -e "a 1\nb 2" | jq -sR 'split("\n")[:-1] | map(split(" "))'
    

    输出:

    [
      [
        "a",
        "1"
      ],
      [
        "b",
        "2"
      ]
    ]
    

    【讨论】:

    • 我知道我可以使用 slurp 选项。但我在问,是否存在类似 jq 表达式的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2018-11-12
    • 2012-10-16
    相关资源
    最近更新 更多