刪除包含高於確定閾值的值的行

刪除包含高於確定閾值的值的行

我有一個數據文件,例如:

數據:

arht    -0.1006 0.0001  0.0147  100     arht    0.0012  -0.0002 0.0182  100
arht    -0.0006 1.0006  0.0133  100     arht    0.1011  0.0003  0.0175  100
bcmn     0.0005 0.0011  0.0165  100     bcmn    0.0015  0.0007  0.0197  100
ffgf    -0.0009 0.0012  0.0121  100     ffgf    0.0007  0.0010  0.0150  100
ffgf    -0.0004 0.0009  0.0105  100     ffgf    0.1008  0.0006  0.0151  100

我使用以下命令提取包含高於 2-3-4 和 7-8-9 列的絕對值 0.10 的值的行:

awk 'sqrt($2*$2)<=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1 {print}' data > output

我需要從資料檔案中刪除這些行。我該如何修改上面的程式碼?

答案1

似乎是一個重複的問題提取文字檔案中大於閾值的值? 如果是這樣,您需要更正程式碼的第一項:

awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1) {print}' data >output

然後你要做的就是在前面加上一個否定號(!)來得到你想要的:

awk '!(sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1) {print}' data > output

相關內容