Analizar JSON con herramientas Unix

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)?

preguntado el 23 de diciembre de 09 a las 18:12

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 ...)? -

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: excepto a veces idioma Y puede Estar más equipado para resolver un problema particular X independientemente de cuántos idiomas sepa la persona que sugirió Y. -

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. -

@auser, ¿estaría de acuerdo con una edición que cambie "con sed y awk" a "con herramientas UNIX" en el título? -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.