約30K行のinput.txtタブ区切りテキストファイルがあります。各行(s1..s30K行)で欠損値(つまり、空白スペース)をチェックし、欠損値にゼロ値を入力します。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
あなたはawkでこのようにすることができます:
awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file
FSおよびOFSをタブに設定すると、出力が正しく区切られます。forループはすべてのフィールドを調べ、空の場合はゼロに設定します。最後の1は{ print $0 }
の省略形です。
私は好む:
sed 's/<TAB> /<TAB>0/g' <input.txt >output.txt
置換<TAB>
は実際のTAB文字(通常、 Ctrl-V、その後 Tab)