我想選擇列9的絕對值小於500的文件行。列有時是正值,有時是負值。awk中的絕對值不起作用?
awk -F'\t' '{ if ($9 < |500|) {print $0} }' > output.bam
這不工作至今..一輪互聯網上告訴我,使用絕對值就要補充
func abs(x) { return (x<0) ? x*-1 : x }
那麼我怎樣想把這個與值一起第9列?我不知道這可能是一個正確的語法..
我想選擇列9的絕對值小於500的文件行。列有時是正值,有時是負值。awk中的絕對值不起作用?
awk -F'\t' '{ if ($9 < |500|) {print $0} }' > output.bam
這不工作至今..一輪互聯網上告訴我,使用絕對值就要補充
func abs(x) { return (x<0) ? x*-1 : x }
那麼我怎樣想把這個與值一起第9列?我不知道這可能是一個正確的語法..
awk -F'\t' 'function abs(x){return ((x < 0.0) ? -x : x)} {if (abs($9) < 500) print $0}'
爲了快速的俏皮話,我用這個辦法:
awk -F'\t' 'sqrt($9*$9) < 500' > output.bam
它可以快速地打字,但對於大的工作,我d想象一下,sqrt()會強加一次性能。
暗示「{print}」,您可以放棄該部分。 –
+1;輕微的簡化:'sqrt($ 9^2)'(注意使用'^'而不是'**'來取冪 - '**'不符合POSIX標準)。 – mklement0
這是太明顯和/或不優雅?
awk -F'\t' '$9 < 500 && $9 > -500' > output.bam
我更願意看到,作爲一個多班輪,而不是一個班輪,但那裏應該工作。 –