извлечь строки, соответствующие шаблону символов, за которыми следуют переменные числа - PullRequest
0 голосов
/ 11 января 2019

У меня есть файл с несколькими столбцами, и я хотел бы извлечь только те строки, которые в 8-м столбце имеют значение выше 0,7 (максимум будет 1). Моя восьмая колонка выглядит так:

DR2=0.05;AF=0.0009;IMP
DR2=0.05;AF=0.0017;IMP
DR2=0.74;AF=0.0012;IMP

Я пробовал следующий код в awk:

 awk '{$8 ~ /^DR2=[>0.7]*/ }' myfile > myfile.filtered

Я пробовал распознавать только часть "DR2 =", и она работает, поэтому проблема, похоже, в части чисел.

Большое спасибо заранее, любая помощь будет оценена по достоинству!

Ответы [ 3 ]

0 голосов
/ 11 января 2019

В идеале вы должны опубликовать образцы, основанные на ваших показанных образцах, не могли бы вы попробовать следующее.

awk '$8 ~ /^DR2=/{split($8,array,"[=;]");if(array[2]>0.7){print}}' Input_file
0 голосов
/ 11 января 2019

Пожалуйста, попробуйте:

awk 'gensub("^.*DR2=([0-9\.]+).*$", "\\1", 1, $4) > 0.7' myfile
0 голосов
/ 11 января 2019

Нечто подобное может сделать работу:

awk  '$8 ~ /^DR2=/ { if (substr($8,5) > 0.7) print }' myfile > myfile.filtered
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...