GNU/Linux >> Tutoriales Linux >  >> Linux

Convertir JSON pretty print en una línea

Deberías usar jq para cosas como esa:

jq -c . input.txt

Una solución rápida y sucia alternativa sería usar sed &tr :

sed -e 's/^ *//' < input.txt | tr -d '\n'

aunque recomendaría usar jq que está diseñado para manipular JSON. jq es como sed para JSON. Manipulando JSON textualmente con sed /awk No se garantiza que /etc produzca JSON semánticamente equivalente.


jq o cualquier otro json La herramienta consciente es la más adecuada para la manipulación de archivos json. Sin embargo, aquí está awk solución basada.

awk -v RS= '{$1=$1}1' input.json
{ "endpointApplications": { "App_Name": { "connectionState": "Disconnected", "connectionTime": "No connection was established", "linkAttributes": { "ackSettings": { "dataAckEnabled": "true", "dataAckTimeout": "5000", "dataNakRetryLimit": "0", "retransmitDelay": "500" }, "keepAliveSettings": { "keepAliveAckTimeout": "5000", "keepAliveInterval": "30000" }, "logTraffic": "false", "port": "9999", "role": "server" }, "protocol": "snmp" } }, "queueStats": {} }

Nota:esta solución es principalmente para los sistemas heredados que no tienen herramientas como jq y no tengo la oportunidad de instalarlos debido a algunas razones.


Linux
  1. Cómo imprimir bastante el archivo JSON en la terminal de Linux

  2. Cómo analizar e imprimir bastante JSON con las herramientas de línea de comandos de Linux

  3. ¿Imprimir dos archivos en dos columnas?

  4. ¿Imprimir línea coincidente y línea enésima de la línea coincidente?

  5. ¿Analizar un campo de una matriz Json en una matriz Bash?

¿Codificar el contenido del archivo y repetirlo como una sola línea?

Imprimir la última línea de un archivo, desde la CLI

Une dos cadenas en una línea con grep

Servidor FTP de una línea

utilidad de línea de comandos para imprimir estadísticas de números en Linux

Imprimir la línea anterior si se cumple la condición