JQ деление одного строкового значения на два - PullRequest
0 голосов
/ 25 августа 2018
[
{
  "host": "a.com",
  "ip": "1.2.2.3",
  "port": 8,
  "name":"xyz", 
  "info":"part1    part2    part3    part4"
},
{
  "host": "b.com",
  "ip": "2.5.0.4",
  "port": 3,
  "name":"xyz",
  "info":"part1    part2    part3    part4"
},
{
  "host": "c.com",
  "ip": "9.17.6.7",
  "port": 4,
  "name":"xyz",
   "info":"part1    part2    part3    part4"
}
]

Я хочу произвести вывод в следующем формате:

a.com,1.2.2.3,part1,part
b.com,2.5.0.4,part1,par2
c.com,9.17.6.7,part1,part2

Проблема в том, что ключ "info "- это один ключ, но я хочу разделить две части информации, разделенные наВкладка отдельно. Как это сделать?

Это моя команда jq для анализа файла:

cat input.json | jq -r '.[] | "\(.host),\(.ip),\(.info)"' > result.txt

1 Ответ

0 голосов
/ 25 августа 2018

Я думаю, info значение отделяется четырьмя пробелами, а не табуляторами, потому что в JSON недопустимый символ табуляции не допускается, и jq выдает ошибку, когда на входе есть недопустимый символ.Если я не ошибаюсь, эта команда должна делать то, что вы хотите

jq -r '.[] | (.info | split("    ")[0:2] | join(",")) as $info | "\(.host),\(.ip),\($info)"' input.json > result.txt
...