Что такое эквивалент jq для опции slurp? - PullRequest
0 голосов
/ 02 июля 2018

Генерирует список массивов:

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

Можно ли отбросить результат split, не передавая результат в новый экземпляр jq?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

До появления inputs ответ на вопрос был "Нет". С inputs и параметром командной строки -n:

$ echo -e "a 1\nb 2" | jq -nR '[inputs|split(" ")]' 
[
  [
    "a",
    "1"
  ],
  [
    "b",
    "2"
  ]
]
0 голосов
/ 02 июля 2018

С двойной split:

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

Выход:

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