Рейтинг:0

Извлечение значений, превышающих пороговое значение, в текстовом файле?

флаг in

У меня есть текстовый файл данных следующим образом:

данные =

архт -0,0006 0,0001 0,0147 100,0 100,0
архт -0,0006 0,0006 0,0133 100,0 100,0
млрд кубометров в сутки -0,0016 0,0010 0,0168 100,0 100,0
млрд кубометров в сутки -0,1012 0,0010 0,0184 100,0 100,0
млрд кубометров в сутки 0,2011 0,0024 0,0126 100,0 100,0
.
.
.

Мне нужно извлечь строки, которые больше 0,10 и -0,10 для 2, 3 и 4 столбцов. В приведенном выше примере столбцы 2, 3 и 4 в последних двух строках содержат значения больше 0,10 и -0,10. Затем выходной файл должен быть:

вывод:

млрд кубометров в сутки -0,1012 0,0010 0,0184 100,0 100,0
млрд кубометров в сутки 0,2011 0,0024 0,0126 100,0 100,0
elmclose avatar
флаг cn
awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 {print}' файл.txt замените file.txt вашим файлом данных.
deepblue avatar
флаг in
Уважаемый @elmclose, если вы можете ответить на этот вопрос, я приму его. Ваше решение работает хорошо. Большое тебе спасибо.
Рейтинг:1
флаг cn

В аук, действие по умолчанию, когда выражение оценивается как истинное, заключается в печати текущей строки. Поскольку вам нужно проверить абсолютное значение числа, игнорируя знак, простой трюк (упомянутый пользователем вяз закрыть в комментарий) заключается в проверке того, что квадратный корень из числа, умноженный на себя (что вернет число как положительное целое число), больше порогового значения. Итак, вы можете просто сделать:

$ awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1' файл
млрд кубометров в сутки -0,1012 0,0010 0,0184 100,0 100,0
млрд кубометров в сутки 0,2011 0,0024 0,0126 100,0 100,0
Рейтинг:0
флаг cn

Вы также можете использовать функцию в awk для проверки допустимости диапазона.

awk 'функция fg(v) {return v<=-.1 || v>=.1 ? 1 : 0} (fg($2)+fg($3)+fg($4)){print}' mkl.txt 

или проще:

awk 'функция fg(v) {return v<=-.1 || v>=.1 ? 1 : 0} fg($2)+fg($3)+fg($4)' mkl.txt 

Вы можете определить любые пределы диапазона, отредактировав .1 и -.1

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

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