slurp选项的jq等效项是什么?

时间:2018-07-02 09:06:16

标签: jq collect

这将生成一个数组列表:

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

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

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

是否可以将split的结果草食而不用将结果输送到jq的新实例中?

2 个答案:

答案 0 :(得分:1)

使用 double split

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

输出:

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

答案 1 :(得分:1)

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

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