-1
votes

Bash grep json réponse

Voici la réponse JSON dans un fichier, nommément rglogin.json xxx

la commande grep ci-dessous peut récupérer session_id < / p> xxx

mais la commande grep suivante ne peut pas récupérer réponse_status xxx


0 commentaires

4 Réponses :


2
votes

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


1 commentaires

Cette solution est spécifique à la plate-forme. L'option -p n'est pas disponible sur BSD, MacOS ou généralement tout autre système d'exploitation non linux.



3
votes

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 grep doivent être utilisés pour des structures de données linéaires / non imbriquées).

par exemple pour votre structure JSON, à Extraire les informations requises à l'aide d'un outil UNIX de Walk-PATH pour JSON: JTC : xxx

divulgation: je suis le créateur de JTC Outil


0 commentaires

1
votes

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


0 commentaires

1
votes

Grep n'est pas le bon outil pour analyse JSON. Utilisez à 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


0 commentaires