es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    #!/bin/bash
    y="Regla"
    x=$(aws s3api get-bucket-lifecycle-configuration --bucket test | jq -r '.Rules[] | @json')
    echo "${y}, ${x}" | csvformat -D ";" >> sample.csv
    

    Aquí, estamos utilizando el filtro @json en jq para dar formato legible a la salida JSON. Luego, estamos utilizando csvformat con la opción -D para especificar el delimitador como punto y coma, que estamos usando para separar las variables y y x. Por último, estamos añadiendo la salida al archivo sample.csv utilizando >>. Esto te dará un archivo CSV con la salida JSON en una sola columna y con formato legible.

Comments are closed.