Voici la réponse JSON dans un fichier, nommément rglogin.json em> la commande grep ci-dessous peut récupérer session_id em> < / p> mais la commande grep suivante ne peut pas récupérer réponse_status p>
4 Réponses :
Pour l'ID de session, il cherche des citations. Pour le statut de réponse, il n'est pas cité.
grep -m1 -oP '\s*"response_status"\s*:\s*\K[^,]+' RGLogin.json
Cette solution est spécifique à la plate-forme. L'option -p code> n'est pas disponible sur BSD, MacOS ou généralement tout autre système d'exploitation non linux.
idéologiquement, un moyen correct de résoudre ces demandes serait d'utiliser des outils conscients du format de données. C'est à dire. Si c'est JSON, l'outil JSON-Caout doit être utilisé (et des outils compatibles de ligne tels que par exemple pour votre structure JSON, à Extraire les informations requises à l'aide d'un outil UNIX de Walk-PATH pour JSON: divulgation: je suis le créateur de grep code> doivent être utilisés pour des structures de données linéaires / non imbriquées).
JTC code>
strong>: p> JTC code > Outil p> p>
En plus de la réponse de @DMitry
J'utilise toujours l'interpréteur PHP pour analyser les données JSON. Mais d'autres langues de script sont aussi possibles. Voici ma solution Bash / PHP pour obtenir les deux valeurs: P>
session_id : 2d48cc11ceabf28c9e92f4b677337dcd response_status : 200
Grep n'est pas le bon outil pour analyse JSON. Utilisez JQ à la place:
$ jq -r '.response_status' RGLogin.json 200 $ $ jq -r '.response.session_id' RGLogin.json 2d48cc11ceabf28c9e92f4b677337dcd $ $jq -r '.response.session_id, .response_status' RGLogin.json 2d48cc11ceabf28c9e92f4b677337dcd 200