LINUX.ORG.RU
решено ФорумAdmin

Обернуть выхлоп в текст

 


0

2

Добрый вечер

# blkid | grep sd | cut -c 1-8 | uniq
/dev/sda
/dev/sdc
/dev/sdd
/dev/sdb
Необходимо обернуть выхлоп вот JSON
{
	"data":[
		{"{#HARDDISK}":"/dev/sda"},
		{"{#HARDDISK}":"/dev/sdc"},
		{"{#HARDDISK}":"/dev/sdd"},
		{"{#HARDDISK}":"/dev/sdb"}
               ]
}
Мое решение
#!/bin/bash

echo "{\"data\":["
array=( `blkid | grep sd | cut -c 1-8 | uniq` )
printf {\"{#HARDDISK}\":\""%s\"},\n" "${array[@]}"
echo "]}"


{"data":[
{"{#HARDDISK}":"/dev/sda"},
{"{#HARDDISK}":"/dev/sdc"},
{"{#HARDDISK}":"/dev/sdd"},
{"{#HARDDISK}":"/dev/sde"},
{"{#HARDDISK}":"/dev/sdf"},
{"{#HARDDISK}":"/dev/sdb"},
{"{#HARDDISK}":"/dev/sdg"},
]}
http://jsonlint.com/ говорит, что последняя запятая не нужна. Как лаконично убрать запятую?

★★★★★

костылем?

echo -e «\b\b\n]}»

x0r ★★★★★
()

{#HARDDISK}

Это какой-то классификатор? Добавь фиктивный элемент с несуществующей записью.

В смысле с несуществующим классификатором.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)

В 99% линухов есть перл, им такие вещи обычно делать удобственнее.

ЗЫ: Заббикс лоу левел дискавери рожаешь? :)

blind_oracle ★★★★★
()
printf '%s\n' '{"data":['
blkid | grep sd | cut -c 1-8 | uniq | sed 's/.*/,{"{#HARDDISK}":"\0"}/;1s/.//'
printf '%s\n' ']}'
anonymous
()
Ответ на: комментарий от blind_oracle

ЗЫ: Заббикс лоу левел дискавери рожаешь? :)

Да, шаблон к smartctl.

petav ★★★★★
() автор топика

Дофильтровать выхлоп awk. Но без сброса данных в файл непонятно, как расставить запятые на концах всех строк выхлопа, кроме последней.

blexey ★★★★★
()
Последнее исправление: blexey (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.