У меня есть файл данных, такой как:
данные:
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