GNU/Linux >> Tutoriels Linux >  >> Linux

Conversion d'une jolie impression JSON en une seule ligne

Vous devriez utiliser jq pour des trucs comme ça :

jq -c . input.txt

Une alternative rapide à une solution sale serait d'utiliser sed &tr :

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

bien que je recommanderais d'utiliser jq qui est conçu pour manipuler JSON. jq est comme sed pour JSON. Manipulation textuelle de JSON avec sed /awk /etc n'est pas garanti pour produire du JSON sémantiquement équivalent.


jq ou tout autre json l'outil conscient est le mieux adapté à la manipulation de fichiers json. Cependant, voici awk solution basée.

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": {} }

Remarque :Cette solution est principalement destinée aux systèmes hérités ne disposant pas d'outils tels que jq et n'ont aucune chance de les installer pour certaines raisons.


Linux
  1. Imprimer deux fichiers sur deux colonnes ?

  2. Imprimer la ligne correspondante et la nième ligne à partir de la ligne correspondante ?

  3. Analyser un champ d'un tableau Json dans un tableau Bash ?

  4. Exécuter une ligne de commandes avec One Sudo ?

  5. Ssh – Copier des fichiers protégés entre serveurs sur une seule ligne ?

Comment déplacer une ligne vers le haut ou vers le bas d'une ligne dans un fichier texte ?

Encoder le contenu du fichier et le répercuter sur une seule ligne ?

Faites correspondre deux chaînes sur une ligne avec grep

Serveur FTP sur une ligne

Imprimer la ligne précédente si la condition est remplie

Faites en sorte que ls imprime tout sur une seule ligne (comme dans le terminal)