2012-03-23 21 views
7

Tengo el siguiente file.csvawk número de recuento de campos y añadir consecuencia

111111 | 111111 | 22222 | 44444 | 4445454 | 67554333 | 

puedo contar el número de campos utilizando la siguiente

awk -F '|' '{print NF}' file.csv 

en mi esquema de base Tengo 33 campos Sin embargo, algunas de las líneas de mi archivo csv tienen menos de 33 campos, por lo tanto, cuando importo el archivo, se queja de la coincidencia incorrecta.

usando awk ¿cómo puedo hacer para agregar campos NULL spreader por | con el fin de completar 33 filas

su ayuda es muy apreciada.

Gracias

Respuesta

6

para agregar los campos vacíos al final de la línea:

awk -F'|' -v OFS='|' '{for(i=NF+1;i<=33;i++)$i=""}1' file.csv 
+0

funcionó muy bien, gracias – Deano

+1

Una versión más simple podría ser 'awk -F '|' -v OFS = '|' 'NF <33 {$ 33 = ""} NF> = 33'' (no es necesario configurar los campos entre 'NF + 1' y' 33', y 'NF> = 33' imprime la línea). – jfg956

+0

@jfgagne Buena idea. ''NF <33 {$ 33 =" "} 1'' – kev

2

Esto podría funcionar para usted:

sed ':a;s/|/&/33;t;s/$/|/;ta' file.csv 
+0

¡Esto también funciona! gracias – Deano

Cuestiones relacionadas