удаление строк включает значения выше определенного порога

удаление строк включает значения выше определенного порога

У меня есть файл данных, такой как:

данные:

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

Я использую следующую команду для извлечения строк, включающих значения выше абсолютного значения 0,10 для столбцов 2-3-4 и 7-8-9:

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

Связанный контент