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.
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:
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 comandoprintf
. La salida se redirige a un archivo llamadosalida
. Este comando debería ser más rápido que la solución anterior con ciclo for.