Страница 1 из 1

awk погасить вывод последней запятой

Добавлено: 2014-07-28 20:33:43
dimidrol80
Доброго времени суток
Нужна ваша помощь в скрипте на awk

Код: Выделить всё

asterisk -rx "sip show peers" | awk 'BEGIN{print"{\n\"data\": ["; } NR>1 {if($2 ~/^[0-9]/)print "\t{ \"{#TRUNKIP}\": \""$2"\" },";} END{print "\t]\n}";}'
данный скрипт выводит список ip c астериска в формате понятному zabbix
но есть одно но последняя запятая лишняя ее выводить не надо
Формат вывода

Код: Выделить всё

{
"data": [
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        { "{#TRUNKIP}": "192.168.xxx.xxx" },
        ]
}

как можно задать для awk не выводить последнюю запятую?

Re: awk погасить вывод последней запятой

Добавлено: 2014-07-29 10:23:17
lazhu

Код: Выделить всё

asterisk -rx "sip show peers" | awk 'BEGIN{print"{\n\"data\": ["; }\
 $2 ~/^[0-9]/ {if(s!="") {print s","; s="";}; s="\t{ \"{#TRUNKIP}\": \""$2"\""} END {if (s!="") print s"\n\t]\n}"}'

Re: awk погасить вывод последней запятой

Добавлено: 2014-07-29 11:29:13
dimidrol80
Большое спасибо за помощь!!!
Если вас не затруднить можете подсказать как именно подавляется вывод последней запятой?

Re: awk погасить вывод последней запятой

Добавлено: 2014-07-30 11:31:17
lazhu
Все строки, кроме последней, печатаем с запятой

Код: Выделить всё

print s","
Последнюю строку печатаем с нужным окончанием

Код: Выделить всё

print s"\n\t]\n}"