обновить json-файл

У меня есть file , на самом деле json-файл. Как я могу добавить запятую до конца каждой, кроме последней строки? Например:

 {"a":1, "b":1, "c":2} {"a":3, "b":3, "c":1} {"a":1, "b":2, "c":3} 

Что я хочу:

 {"a":1, "b":1, "c":2}, {"a":3, "b":3, "c":1}, {"a":1, "b":2, "c":3} 

6 Solutions collect form web for “обновить json-файл”

Вы можете использовать awk :

 awk 'NR > 1{print line","}{line=$0;}END{print $0}' jsonfile 

Вы можете использовать sed :

 sed '$n;s/$/,/' file 
  • $n; означает, что последняя строка продолжается.
  • Иначе он добавляет a , в конце строки.
  • Если вы добавите флаг -i (не POSIX), файл будет редактироваться на месте.

Если это должно быть awk :

 awk 'NR>1{print p} {p=$0","}END{print}' file1 
  • Сохраняет содержимое строки в переменной p .
  • Переменная печатается, за исключением последней строки.
  • Когда вход подходит к концу, последняя строка печатается так, как есть.

Как насчет в perl :

 #!/usr/bin/perl use strict; use warnings; use JSON; my $json_list; while ( my $json_str = <> ) { push ( @$json_list, from_json ( $json_str ) ); } print to_json ( $json_list, { pretty => 1, canonical => 1 } ); 

Принимает данные о STDIN или myscript.pl somefilename и берет myscript.pl somefilename данные и строит из него массив JSON.

Результат:

 [ { "a" : 1, "b" : 1, "c" : 2 }, { "a" : 3, "b" : 3, "c" : 1 }, { "a" : 1, "b" : 2, "c" : 3 } ] 

Исходный файл – это фактически новый JSON (NDJSON).

Вместо использования инструментов GNU я рекомендую установить json из NPM.

 # say the file is test.log $ json -f test.log -g [ { "a": 1, "b": 1, "c": 2 }, { "a": 3, "b": 3, "c": 1 }, { "a": 1, "b": 2, "c": 3 } ] 

Чистый bash :

 while read line do echo "$line," done < <(head -n-1 testfile) echo `tail -n1 testfile` 

Этот скрипт добавляет «,» к каждой строке, кроме последней, а затем печатает последнюю строку без изменений.

Похоже, что реальная цель здесь – создать массив JSON из потока объектов JSON. Отличным инструментом для любого, что связано с JSON, является

https://stedolan.github.io/jq/

Задача преобразования файла (например, input.txt) объектов JSON в массив JSON так же проста, как:

 $ jq -s . input.txt 

jq также может принимать данные от STDIN.

  • Как конвертировать JSON-файл в другой формат
  • Как разобрать скрипт на Bash? (платформа MIPS)?
  • Повторение текста и выполнение команды с помощью jq
  • Каковы последствия наличия большого количества файлов в каталоге в файловой системе ext4?
  • Как разбирать JSON с помощью сценариев оболочки в Linux?
  • Создайте файл JSON всего установленного программного обеспечения dpkg
  • Редактирование значения дочернего элемента JSON с помощью jq
  • Как преобразовать вывод ps (1) в JSON?
  • Преодоление новых строк с помощью grep -o
  • возможна одиночная команда jq с несколькими выходами?
  • Подстановка переменных Bash в строке JSON
  • Interesting Posts

    Как полностью удалить KDE из Mint 17?

    Как удалить новые строки из ip в качестве вывода?

    Глобальные переменные окружения для пользователей и systemd

    Среднее количество подэлементов

    Как использовать разделитель полей и игнорировать строки в awk без трубопроводов?

    Создание терминального приложения из сценария оболочки

    Как загрузиться с помощью grub2 rescue promt в систему UEFI?

    Разница между запуском mke2fs и настройкой типа FS в cfdisk?

    Как реализовать горизонтальный кот?

    Как сделать разделы в / home / user / writable пользователем?

    Изменить имя пользователя без доступа root?

    Верните имя пользователя, который только что вошел в систему в сценарии входа в систему

    команда терминала | grep IP

    В домашнем каталоге новых пользователей создайте подкаталог с определенной группой и разрешениями

    Как выйти из ssh-соединения при административно запрещенной ошибке

    Linux и Unix - лучшая ОС в мире.