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

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 }.


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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.