欠損値の空白スペースをゼロに置き換える


13

約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

回答:


14

あなたはawkでこのようにすることができます:

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

説明

FSとOFSをタブに設定すると、出力が正しく区切られます。forループはすべてのフィールドを調べ、空の場合はゼロに設定します。最後の1つはの省略形です{ print $0 }


5

私は好む:

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

交換してください<TAB>(一般的打撃によって得られた実際のTAB文字でCtrl-V、その後、Tab

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.