slurp 选项的 jq 等价物是什么?

What is the jq equivalent for the slurp option?

这会生成一个数组列表:

$ 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"
  ]
]

但是当我尝试将列表转换为数组而不对其进行 slurping 时,我得到了一个数组列表而不是单个数组:

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

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

加倍split:

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

输出:

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

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

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