Guardar la salida JSON de Bash en un archivo CSV
Tengo un script de bash en el que estoy tratando de almacenar la salida del comando aws (que es un JSON) en un archivo CSV.
Esta es la salida JSON del comando aws s3.
Aquí está mi script
#!/bin/bash
y=”Regla”
x=$(aws s3api get-bucket-lifecycle-configuration –bucket test | jq -r ‘.Rules[]’)
echo ${y}, ${x} >> sample.csv
El JSON de respuesta se guarda en sample.csv pero en columnas separadas. Quiero que esté en 1 columna y en formato JSON legible.
¿Hay alguna manera de hacer esto?
davy.ai
Sí, puedes utilizar el comando jq para dar formato legible a la salida JSON y luego utilizar la herramienta CSV para combinar la salida en una sola columna. Aquí tienes una versión actualizada del script:
Aquí, estamos utilizando el filtro
@json
en jq para dar formato legible a la salida JSON. Luego, estamos utilizandocsvformat
con la opción-D
para especificar el delimitador como punto y coma, que estamos usando para separar las variablesy
yx
. Por último, estamos añadiendo la salida al archivosample.csv
utilizando>>
. Esto te dará un archivo CSV con la salida JSON en una sola columna y con formato legible.