我與線條爲製表符分隔的文件:提取的行的最大 - 最小該行中滿足某些條件
chr1 1001 + KEEP 0.5 0.3 0.06 0.4 0.2 0.3 0.5
chr1 40004 + KEEP 0.93 0.2 0.6 0.25 0.8 NA NA
chr2 140004 + KEEP 0.03 0.02 0.06 0.05 0.08 NA 0.01
chr2 455235504 - KEEP NA 0.12 0.67 0.51 0.8 NA NA
chr3 5004 + KEEP 0.53 0.52 NA 0.5 NA 0.54 NA
..
我要計算從每行的最大和最小之間的差第5列以後,並提取其中(最大 - 最小)差值等於或大於0.1的行。因此,例如與上面給出的投入,我應該得到:
chr1 1001 + KEEP 0.5 0.3 0.06 0.4 0.2 0.3 0.5
chr1 40004 + KEEP 0.93 0.2 0.6 0.25 0.8 NA NA
chr2 455235504 - KEEP NA 0.12 0.67 0.51 0.8 NA NA
..
如何使用awk來爲每個文件約幾百萬行做到這一點?
目前我正在嘗試
awk '{min=max=$5;
for(i=5;i<=67;i++){
if($i<min) min=$i;
if($i>max) max=$i
}
print min,max}' test.txt
請出示你試了一下,然後我們會幫助您解決問題。 SO不是免費的編碼服務。 – Barmar
提示:你的代碼應該有一個像for(i = 5; i <= NF; i ++)這樣的循環來遍歷列並找到最小/最大值。 – Barmar
目前我正在嘗試'awk'{min = max = $ 5; for(i = 5; i <= 11; i ++){if($ i max)max = $ i} print min,max}'test.txt'來測試'awk'是否可以提取最大值和最小值。然後我想着如何操作它來給我帶來改變。然後我會弄清楚如何設置給定的條件。 –
Turtle