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.

¿Es posible reemplazar el valor de una celda en un archivo CSV utilizando grep, sed o ambos?

He escrito el siguiente comando:
“`!/bin/bash
awk -v value=$newvalue -v row=$rownum -v col=1 'BEGIN{FS=OFS=","} NR==row {$col=value}1' "${file}".csv >> temp.csv && mv temp.csv "${file}".csv

<pre><code><br />Entrada de muestra del archivo**file.csv**
</code></pre>

Header,1
Field1,Field2,Field3
1,ABC,4567
2,XYZ,7890

<pre><code><br />Suponiendo que $newvalue = 3, $rownum = 4 y col = 1, entonces el código anterior reemplazará:

Salida requerida
</code></pre>

Header,1
Field1,Field2,Field3
1,ABC,4567
3,XYZ,7890
“`

Entonces, si conozco la fila y la columna, ¿es posible reemplazar el valor deseado usando grep, sed?

Edit1: Field3 siempre tendrá un valor único para sus respectivas filas. (en caso de que esa información sea útil de alguna manera)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible reemplazar el valor indicado utilizando los comandos grep y sed. Aquí está el comando para lograr el resultado deseado:

    sed -i "/^${rownum},/{s/^[^,]\+/${newvalue}/${col}}" ${file}.csv
    

    Explicación:

    • El comando sed busca una línea que comience con el número de fila dado y una coma, es decir, ^${rownum},.
    • El comando s se utiliza para sustituir el valor en la columna dada por el nuevo valor. Busca el primer campo en la línea, es decir, ^[^,]\+, y lo reemplaza con el nuevo valor en la columna dada, es decir, ${newvalue}, utilizando la variable de número de columna ${col}, que se pasa como argumento al comando sed.
    • La marca de opción -i se utiliza para editar el archivo en su lugar.

    Nota: Dado que el Campo3 siempre tendrá un valor único para sus respectivas filas, podemos estar seguros de que el patrón de búsqueda de cada fila siempre coincidirá con una sola línea, y la sustitución se hará solo para esa fila. De lo contrario, se debe tener cuidado para asegurarse de que el patrón coincida correctamente.

Comments are closed.