Intereting Posts
Аппаратная точка останова в GDB + QEMU отсутствует start_kernel Каков наиболее эффективный способ регистрации ошибок сценария оболочки crontab с ошибкой? Bash не находит программу, даже если она на моем пути Как включить использование команд на удаленном хосте с помощью ssh без пароля? Случайная цветная колонка? Можно ли это объяснить; разница в поведении массива между использованием массива = $ (команда) и array = ($ (команда))? Как сообщить журналисту перечитать его конфигурацию? Unix / Linux восстанавливает и восстанавливает удаленные файлы Как проверить, является ли file1 префиксом file2? Файловая система размонтирована после выходных Arch Linux: невозможно подключиться к интернету после установки Псевдонимы в сценариях не установлены глобально Окружающая среда USER и USERNAME в CentOS 7 Звук не работает на Centos 6.5 VPS Файлы отсутствуют, и я хочу знать, что с ними случилось

обновить 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} 

Вы можете использовать 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.