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.

Insertar columnas en archivo con Bash o similar.

Supongamos que tengo un archivo como:

1 3 44 5
2 23 1 44

y quisiera agregar dos columnas de 0 después de las dos primeras, para obtener:

1 3 0 0 44 5
2 23 0 0 1 44

Podría usar algo como:

cat archivo|(
for ((i=0;i<numlineas;i++))
do
   read linea
   echo $(echo $linea|cut -d" " -f -2) 0 0 $(echo $linea|cut -d " " -f 3-)
done
) > salida

donde numlineas es el número conocido de líneas. Pero esto resulta ser extremadamente lento.

¿Cuál es la manera de hacer el trabajo de una manera rápida?
Bash, awk u otras herramientas de línea de comandos de Linux están bien.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma de hacer este trabajo más rápido es utilizando awk. Podemos usar el comando awk para leer cada línea del archivo, dividirla en campos y luego imprimir la salida deseada. Aquí hay un ejemplo de comando awk:

    awk '{printf "%s %s 0 0 %s %s\n", $1, $2, $3, $4}' archivo > salida
    

    Este comando lee cada línea del archivo archivo, la divide en campos (que se representan por $1, $2, $3 y $4) y luego imprime la salida deseada utilizando el comando printf. La salida se redirige a un archivo llamado salida. Este comando debería ser más rápido que la solución anterior con ciclo for.

Comments are closed.