Script Bash que converte qualquer saída (texto) para o formato json

3

Eu quero criar um script bash que converta a saída de outros scripts (texto normalmente simples) em um formulário json válido. Como posso fazer isso ?

Exemplo:

awk '/^Mem/ {printf("%u%%", 100*/);}' <(free -m)

comando me dá memória usada. Eu quero obter a saída em forma de jason válido.

Saída desejada:

 {“Memory”:”80”}
    
por Ketankumar Patel 26.03.2013 / 07:23

2 respostas

3

Veja um exemplo de memória:

echo {\"Memory\":\"$(awk '/^Mem/ {printf("%u", 100*/);}' <(free -m))\"} > mem.json

Colocando esse novo nome de arquivo em json:

echo {\"file\":\"$(ls mem.json)\"} > filename.json

Ou:

echo {\"<paramName-here>\":\"$(<value-of-param-from-command-here>)\"} > mem.json 

Quando fica mais complicado do que isso, você pode continuar a escrever linha por linha ou, mais provavelmente, construir strings em uma variável.

    
por chaskes 02.11.2013 / 04:11
2
free -k | { read 
    read TITLE TOTAL USED REST
    echo "{\"Memory\":\"$(( 100 * $USED / $TOTAL ))\"}"
}

A saída de free é canalizada para um comando composto que consiste em:
Uma primeira "leitura" que pula a primeira linha de saída de "livre". Uma segunda "leitura" que lê a linha que precisamos, precisamos apenas do segundo e terceiro valor.
Um eco que imprime a linha no formato desejado, incluindo o cálculo

    
por thom 30.10.2013 / 18:12