Sostituzione dello spazio vuoto con valore mancante con zero


13

Ho input.txt file di testo delimitato da tabulazioni intorno a 30K righe, vorrei controllare ogni riga (linee s1..s30K) per il valore mancante (cioè spazio vuoto) e riempire il valore mancante con valore zero. Vedi 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

Risposte:


14

Potresti farlo in questo modo con awk:

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

Spiegazione

L'impostazione di FS e OFS su tab garantisce che l'output sia delimitato correttamente. Il ciclo for esamina ogni campo e lo imposta su zero se è vuoto. Quello alla fine è una scorciatoia per { print $0 }.


5

Preferirei:

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

Sostituisci <TAB>con il vero carattere TAB (generalmente ottenuto colpendo Ctrl-V, quindi Tab)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.