Рейтинг:0

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

флаг in

У меня есть файл данных, например:

данные:

Архт -0,1006 0,0001 0,0147 100 Архт 0,0012 -0,0002 0,0182 100
Архт -0,0006 1,0006 0,0133 100 Архт 0,1011 0,0003 0,0175 100
млрд м3 0,0005 0,0011 0,0165 100 млрд м3 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}' данные > вывод

Мне нужно удалить эти строки из файла данных. Как я могу изменить приведенный выше код?

Рейтинг:0
флаг cn

Похоже на дублирующий вопрос Извлечение значений, превышающих пороговое значение, в текстовом файле? Если это так, вам нужно исправить первый член вашего кода:

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}' данные >вывод

Тогда все, что вам нужно сделать, это добавить знак отрицания (!) впереди, чтобы получить то, что вы хотите:

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}' данные > вывод

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.