Eksik değer boş alanını sıfır ile değiştirme


13

30K satır civarında input.txt sekmeyle ayrılmış metin dosyası var, her satırı (s1..s30K satır) eksik değer (yani boşluk) için kontrol etmek ve eksik değeri sıfır değeri ile doldurmak istiyorum.

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

Yanıtlar:


14

Bunu awk ile böyle yapabilirsiniz:

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

açıklama

FS ve OFS'nin sekmeye ayarlanması, çıkışın doğru şekilde sınırlandırılmasını sağlar. For-loop her alana bakar ve boşsa sıfıra ayarlar. Sonunda bir kısayol { print $0 }.


5

Tercih ederim:

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

Değiştir <TAB>(genellikle vurma yoluyla elde gerçek TAB karakteri ile Ctrl-Vdaha sonra Tab)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.