Mengganti ruang kosong nilai yang hilang dengan nol


11

Saya memiliki file teks yang dibatasi-tab input.txt di sekitar 30K baris, saya ingin memeriksa setiap baris (s1..s30K baris) untuk nilai yang hilang (yaitu ruang kosong) dan mengisi nilai yang hilang dengan nilai nol.Lihat keluar.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

Jawaban:


13

Anda bisa melakukannya seperti ini dengan awk:

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

Penjelasan

Mengatur FS dan OFS ke tab memastikan output dibatasi dengan benar. For-loop melihat setiap bidang dan menetapkannya ke nol jika kosong. Yang di akhir adalah singkatan untuk { print $0 }.


5

Saya lebih suka:

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

Ganti <TAB>dengan karakter TAB asli (umumnya diperoleh dengan memukul Ctrl-V, lalu Tab)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.