缺少的行,我有以下表(真正的文件要大得多 - 2GB):插入序列+默認值的下一個數爲AWK
mwe.txt
X 7 1 3
X 8 1 4
X 9 1 6
X 13 2 8
X 14 2 8
X 15 3 8
X 19 6 10
X 20 6 11
Y 13 2 8
Y 14 2 8
Y 15 3 8
Y 19 6 10
Y 20 6 11
不幸的是如果第3列和第4列爲零,此表中未打印任何行。我想這些缺少的行插入的,具有:
- 在列3的「0」和4
- 上一行列2
- 從以前的行的名稱爲塔1之後的下一順序號
- 打印的標題和
- 行號作爲附加列添加。
我希望能夠管這個,所以我想盡可能快地做到這一點。我做了使用awk開始,爲此,我找到的代碼類似的問題:
awk 'BEGIN { prev_chr="";prev_pos=0;} { if($1==prev_chr && prev_pos+1!=int($2)) {for(i=prev_pos+1;i<int($2);++i) {printf("%s\t%d\t0\n",$1,i);}} print; prev_chr=$1;prev_pos=int($2);}' mwe.txt > output.txt
其輸出以下:
output.txt的
X 7 1 3
X 8 1 4
X 9 1 6
X 10 0
X 11 0
X 12 0
X 13 2 8
X 14 2 8
X 15 3 8
X 16 0
X 17 0
X 18 0
X 19 6 10
X 20 6 11
Y 13 2 8
Y 14 2 8
Y 15 3 8
Y 16 0
Y 17 0
Y 18 0
Y 19 6 10
Y 20 6 11
,你可以看,它不會將第4列的零置於缺失的行中。
總之,所需的輸出:
mCoord chr coord samp1 samp2
1 X 7 1 3
2 X 8 1 4
3 X 9 1 6
4 X 10 0 0
5 X 11 0 0
6 X 12 0 0
7 X 13 2 8
8 X 14 2 8
9 X 15 3 8
10 X 16 0 0
11 X 17 0 0
12 X 18 0 0
13 X 19 6 10
14 X 20 6 11
15 Y 13 2 8
16 Y 14 2 8
17 Y 15 3 8
18 Y 16 0 0
19 Y 17 0 0
20 Y 18 0 0
21 Y 19 6 10
22 Y 20 6 11
這是一個很小的變化,瞭解你所使用的代碼一樣。 – 123