2017-05-23 34 views
0

我試圖創建一個awk腳本,該腳本能夠根據第3個字段計數連續圖案的數量,並且如示例中那樣打印第一個和最後一個座標字段(第2個字段)。如何使用awk查找行中的連續模式?

我有一個腳本,可以協調的窗戶,我想,例如計算在任何模式的數量:1000000在對中心的數據:

awk '{a[$1 FS 1000000*int(($2-1)/1000000)+500000]++} END{for(k in a) print k,a[k]}' file 

但是它計算所有模式的數無關爲1/1或0/1。

17 38172452 1/1 
17 38172942 1/1 
17 38172973 1/1 
17 38173143 0/1 
17 38176256 0/1 
17 38176476 1/1 
17 38178149 0/1 
17 38178627 0/1 
17 38179275 0/1 
17 38179290 0/1 
17 38179492 0/1 
17 38179667 1/1 
17 38182229 0/1 
17 38183090 0/1 
17 38183505 0/1 
17 38188419 0/1 
17 38188844 0/1 
17 38189049 0/1 

預期結果:

17 38172452 38172973 3 1/1 
17 38173143 38176256 2 0/1 
17 38178149 38179492 5 0/1 
17 38182229 38189049 6 0/1 

你們能幫助我這個?

回答

1

假設$1沒有改變...

awk '{if(p==$3) {c++; e=$2} 
     else {if(c>1) print $1,b,e,p,c; 
      b=$2; c=1; p=$3}} 
END {print $1,b,$2,p,c}' file 
+1

awk來救援! –

+0

我在打印語句中發現了一個小錯誤,即標記字段(第3字段)被打印錯誤,我更改了$ 3,並且它被修復。 awk'{if(p == $ 3){C++; e = $ 2} else {if(c> 1)print $ 1,b,e,p,c; b = $ 2; C = 1; p = $ 3}} END {print $ 1,b,$ 2,p,c}'文件 非常感謝卡拉克法! –

+1

是的,對,當然... – karakfa