Форматирование \ n списка адресов IPv4 в json - PullRequest
0 голосов
/ 31 января 2019

У меня есть список адресов IPv4, выводимых в списке, каждый из которых разделен \ n.Программа, в которую я хотел бы импортировать их, ожидает ее в следующем формате:

{
  "data":[
      { "IP":"127.0.0.1"  },
      { "IP":"192.168.0.1" }
  ]
}

Входные данные для вышеперечисленного были бы такими:

127.0.0.1
192.168.0.1

Я посмотрел в jq cookbook для идей, но самое близкое, что мне удалось связать вместе, - это использование [] not {}, не внутри данных, а только значение без ключа.

jq -sR '[sub("\n$";"") | splits("\n") | sub("^ +";"") | [splits(" +")]]'

Выходы:

[
  [
    "127.0.0.1"
  ],
  [
    "192.168.0.1"
  ]
]

1 Ответ

0 голосов
/ 31 января 2019

Вот решение:

jq -Rn '{data: [ {IP: inputs} ] }' input.txt

Если это кажется немного волшебным, вы можете использовать более приземленный вариант:

jq -Rn '{data: [ inputs | {IP: .} ] }' input.txt

Конечно, на практике выможет также потребоваться удалить посторонние пробелы во входных данных, отфильтровать комментарии, выполнить проверку достоверности или отфильтровать недействительные входные данные ...

...