Analizar JSON con herramientas Unix
Frecuentes
Visto 1,135 equipos
1000
Estoy tratando de analizar JSON devuelto por una solicitud curl, así:
curl 'http://twitter.com/users/username.json' |
sed -e 's/[{}]/''/g' |
awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'
Lo anterior divide el JSON en campos, por ejemplo:
% ...
"geo_enabled":false
"friends_count":245
"profile_text_color":"000000"
"status":"in_reply_to_screen_name":null
"source":"web"
"truncated":false
"text":"My status"
"favorited":false
% ...
¿Cómo imprimo un campo específico (indicado por el -v k=text
)?
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas json bash parsing or haz tu propia pregunta.
Erm, eso no es bueno analizando json por cierto ... ¿qué pasa con los caracteres de escape en cadenas ... etc.¿Hay una respuesta de Python a esto en SO (una respuesta de perl incluso ...)? - martinr
Cada vez que alguien dice "el problema X se puede resolver fácilmente con otro lenguaje Y", ese es el código para "Mi caja de herramientas sólo tiene una piedra para clavar clavos ... ¿por qué molestarse con otra cosa?" - BryanH
@BryanH: excepto a veces idioma Y podemos Estar más equipado para resolver un problema particular X independientemente de cuántos idiomas sepa la persona que sugirió Y. - jfs
Un poco tarde, pero aquí va.
grep -Po '"'"version"'"\s*:\s*"\K([^"]*)' package.json
. Esto resuelve la tarea fácilmente y solo con grep y funciona perfectamente para JSON simples. Para JSON complejos, debe usar un analizador adecuado. - diosney@auser, ¿estaría de acuerdo con una edición que cambie "con sed y awk" a "con herramientas UNIX" en el título? - Charles Duffy