Thay thế không gian trống giá trị bị thiếu bằng không


13

Tôi có tệp văn bản được phân định bằng tab input.txt khoảng 30K dòng, tôi muốn kiểm tra từng hàng (s1..s30K dòng) để tìm giá trị thiếu (tức là khoảng trống) và điền giá trị thiếu với giá trị bằng không. Xem 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

Câu trả lời:


14

Bạn có thể làm điều đó như thế này với awk:

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

Giải trình

Đặt FS và OFS thành tab đảm bảo đầu ra được phân tách chính xác. Vòng lặp for nhìn vào mọi trường và đặt nó về 0 nếu nó trống. Một ở cuối là một tốc ký cho { print $0 }.


5

Tôi thích:

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

Thay thế <TAB>bằng ký tự TAB thực (thường thu được bằng cách nhấn Ctrl-V, sau đó Tab)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.