Добавление объектов JSON в массив с помощью jq.

Это распечатает считанные строки, если последний символ по модулю 2 не равен нулю.

perl -wlne 'print $_ if ((substr $_, -1) % 2)' /path/to/file

1
26.02.2020, 23:31
2 ответа

Кажется, этот трюк с потоковым фильтромjq 1.5inputsпомогает

... | jq -n '.items |= [inputs]'

Пр.

$ find ~/ -maxdepth 1 -name "D*" | 
    while read line; do 
      jq -n --arg name "$(basename "$line")" --arg path "$line" '{name: $name, path: $path}'
    done | jq -n '.items |= [inputs]'
{
  "items": [
    {
      "name": "Downloads",
      "path": "/home/steeldriver/Downloads"
    },
    {
      "name": "Desktop",
      "path": "/home/steeldriver/Desktop"
    },
    {
      "name": "Documents",
      "path": "/home/steeldriver/Documents"
    }
  ]
}
7
28.04.2021, 23:22

Если вы не возражаете против использования языка программирования, это довольно просто. Вот пример с PHP:

<?php
$m1 = [
   'items' => []
];
$a1 = glob('~/D*');
foreach ($a1 as $s1) {
   $m1['items'][] = [
      'name' => basename($s1),
      'path' => $s1
   ];
}
echo json_encode($m1, JSON_PRETTY_PRINT);
0
28.04.2021, 23:22

Теги

Похожие вопросы