我試圖設計一個awk命令來選擇行值列2,該列值在通過將行的特定列配對在一起而定義的值的範圍內。它在調用不在外顯子邊界的50個核苷酸內的單核苷酸多態性方面具有應用。該文件是這樣的:awk命令從列對中定義的間隔中選擇值
ID X start end start end start end start end
Fal1825_c6 802 2 62 62 239 239 362 362 934
Fal1821_c2 152 1 19 22 159 159 263 264 398
Fal18279_c7 41 1 177 177 598
Fal18376_c3 367 1 251 251 421
Fal18748_c2 601 1 152 152 489 489 499 499 677
Fal18748_c2 500 1 152 152 489 489 499 499 677
Fal18792_c3 750 1 234 234 459 459 762 762 83
Fal19487_c2 89 1 177 177 270 270 409 411 459
我只想打印線,其中第二列的值落在範圍(」開始」 + 50)和(‘結束’ - 50),對於任何‘啓動’ ($ 3 + 50和$ 4-50)或($ 5 + 50和$ 6-50)或(())之間的「結束」配對(配對僅由彼此相鄰的「開始」和「結束」列組成) $ 7 + 50和$ 8-50)等等,考慮組件的所有起始端列。
輸出將如下所示:
ID X start end start end start end start end
Fal1825_c6 802 2 62 62 239 239 362 362 934
Fal18376_c3 367 1 251 251 421
Fal18748_c2 601 1 152 152 489 489 499 499 677
Fal19487_c2 89 1 177 177 270 270 409 411 459
我試圖命令看起來像這樣
awk '{a=3; b=4; while ($a > 0) do {if ($2 > ($a + 50) && $2 < ($b + 50)){print $0} else {a+2, b+2} }'
謝謝
你永遠不會改變的值'a'和'b':'else {a + = 2; b + = 2}',我會把循環寫成while(a
2012-04-20 14:03:32
另外,awk不使用在一個while循環中做''關鍵字。 – 2012-04-20 14:10:41