Reemplazar el valor en blanco del espacio perdido con cero

13

Tengo el archivo de texto delimitado por tabulaciones input.txt alrededor de 30K líneas, me gustaría verificar el valor faltante de cada fila (s1..s30K líneas) y completar el valor faltante con valor cero. Ver out.txt

input.txt

 id  no1  no2  no3  no4
 s1  23   34   45   12
 s2       4    4      
 s3  4         8    0

out.txt

id  no1  no2  no3  no4
s1  23   34   45   12
s2  0     4    4    0  
s3  4     0    8    0
Jack
fuente

Respuestas:

14

Podrías hacerlo así con awk:

awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file

Explicación

Establecer FS y OFS en la pestaña asegura que la salida esté delimitada correctamente. El bucle for observa cada campo y lo establece en cero si está vacío. El que está al final es una abreviatura de { print $0 }.

Thor
fuente
5

Preferiría:

sed 's/<TAB> /<TAB>0/g' <input.txt >output.txt

Reemplace <TAB>con el caracter real TAB (generalmente obtenido al golpear Ctrl-V, entonces Tab)

mdpc
fuente