Combinar multitud de archivos JSON en Linux automáticamente

Si tenemos una gran cantidad de arhivos .json en una carpeta, podemos estar interesados en combinarlos para trabajar con todos ellos simultáneamente. Podemos, por ejemplo, cargar un solo archivo en MongoDB, en vez de uno a uno. Combinar multitud de archivos JSON en Linux es muy sencillo a través de la terminal.

Quiero leer...

Combinar multitud de archivos JSON en Linux

Primero, y como es obvio, tenemos que tener una carpeta con todos los archivos JSON que queramos unir. Para ello navegamos a la carpeta en cuestión y vemos los archivos que tenemos con ls:

$ ls
2019-12-31_06-40-41_882134_g2Hv  2020-01-11_12-54-28_612911_mmA9  2020-01-22_09-42-48_582968_PJE9
2019-12-31_06-40-46_447979_e82w  2020-01-11_12-55-18_553972_CSAF  2020-01-22_09-43-49_042075_Zvyv
2019-12-31_06-40-50_594421_tF4h  2020-01-11_12-56-18_336449_P8yU  2020-01-22_09-44-49_477155_lCSg
2019-12-31_06-41-28_805588_ge9c  2020-01-11_12-57-20_815564_P1LV  2020-01-22_09-45-37_110657_Jcmy
2019-12-31_06-41-33_121012_PmhT  2020-01-11_12-58-22_914044_xmwd  2020-01-22_09-45-48_274366_Hngx
2019-12-31_06-41-37_333226_HsEA  2020-01-11_12-59-17_703361_cy4a  2020-01-22_09-50-32_913921_bYcX
2019-12-31_06-41-51_590609_RzdA  2020-01-11_12-59-24_684483_r4Fc  2020-01-22_09-51-16_229972_RQ62
2019-12-31_06-42-05_482568_9slK  2020-01-11_13-00-35_542460_fb4F  2020-01-22_09-52-19_867298_Pszn
2019-12-31_06-42-43_485552_bLS3  2020-01-11_13-01-27_933147_vcQ1  2020-01-22_09-53-19_512477_Y2HA

En mi caso, todos esos archivos son JSON, aunque no aparece la extensión .json al final.

Instalar el paquete jq

Para poder combinar multitud de archivos JSON en Linux tenemos que instalar el paquete jq. Este es un paquete ligero que sirve para procesar archivos JSON desde la línea de comandos. Para ello, lo instalamos desde la terminal con APT:

sudo apt-get install jq

Estructura de uno de mis archivos JSON

Cada archivo está compuesto por un array JSON. Os muestro uno al azar a continuación:

[ 
    "meta": {
        "account": "emprise", "event": "presence"
    }
    ,
    "payload": {
        "id": 1323178914838774155, "connection_id": 1323178914641609032, "id_str": "1323178914838774155", "connection_id_str": "1323178914641609032", "asset": "356232050880755", "time": "2019-12-31T06:40:36Z", "type": "connect", "reason": "idle_out"
    }
}
]

Combinar todos los archivos JSON

Una vez visto dónde se sitúan los archivos .json y además tenemos instalado el paquete jq, podemos comenzar a mezclar los archivos JSON. Entre las muchas opciones, os voy mostrar el código que a mí me ha funcionado perfectamente:

jq -s '[.[][]]' * > todos_archivos.json

Como cada uno de mis archivos comienzan y acaban con corchetes, he tenido que incluir esta restricción ('[.[][]]'). Además, como mis archivos no tenían la extensión escrita, con un simple asterisco (*) indico que me coja todos los archivos en esa carpeta. Si tuviesen la extensión, podríamos emplear *.json en lugar del asterisco únicamente. Finalmente, como quiero tener el archivo resultante con la combinación de todos los JSON, le indico que me lo guarde en un archivo que se va a llamar todos_archivos.json con el código > todos_archivos.json.

De este modo, combinar más de un archivo JSON en Linux se convierte en una tarea rápida y sencilla.

2 comentarios en «Combinar multitud de archivos JSON en Linux automáticamente»

Deja un comentario