2012-04-18 2 views
0

問題を解決するためにawkを使用しようとしています。それは、SNPが別のSNPの60bp以内にないという要件があるSNPチップ上に置くための良質の単一核種多型(SNP)を選択するアプリケーションを有する。ファイルは次のようになりますawkを使用して、フィールド1とフィールド2で定義された値と一致するレコードを削除します。

comp1008_seq1 20
comp1008_seq1 234
comp1008_seq1 260
comp1008_seq1 500
comp3044_seq1 300
comp3044_seq1 350
comp3044_seq1 460
comp3044_seq1 600
........ ........

(フィールド2に基づいて)+60以内にないレコードのみを印刷したい(フィールド1に基づいて)同じコンポーネントからのものです。したがって、(フィールド1に基づいて)異なるコンポーネントから来た場合、それらが+60以内にあるかどうかは関係ありません。上記の例の出力は次のようになります。

comp1008_seq1 20
comp1008_seq1 234
comp1008_seq1 500
comp3044_seq1 300
comp3044_seq1 460
comp3044_seq1 600

答えて

3

http://ideone.com/h6oEI

{ 
     if ($1 != last1 || abs($2-last2) > 60) print 
     last1 = $1; last2 = $2 
} 

function abs(x){ 
     return x > 0 ? x : -x 
} 
+0

ありがとう。それは非常に便利です。 – user1308144

関連する問題