用零替换缺失值空格

用零替换缺失值空格

我有大约 30K 行的 input.txt 制表符分隔文本文件,我想检查每一行(s1..s30K 行)是否缺少值(即空格)并用零值填充缺失值。请参阅 out.txt

输入.txt

 id  no1  no2  no3  no4
 s1  23   34   45   12
 s2       4    4      
 s3  4         8    0

输出.txt

id  no1  no2  no3  no4
s1  23   34   45   12
s2  0     4    4    0  
s3  4     0    8    0

答案1

你可以用 awk 这样做:

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

解释

将 FS 和 OFS 设置为制表符可确保输出正确分隔。 for 循环查看每个字段,如果为空,则将其设置为零。最后的那个是 的简写{ print $0 }

答案2

我更喜欢:

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

替换<TAB>为真正的TAB字符(一般通过点击Ctrl-V, 然后获得Tab

相关内容