Условный разбор номера строки с использованием awk - PullRequest
0 голосов
/ 08 ноября 2018

Это легко, но я просто не могу понять ...

head file.txt
FN545816.1  EMBL    CDS     4188502 4189062 .   -   0   CDR20291_3537
FN545816.1  EMBL    gene    4189100 4189807 .   +   .   ID=gene-CDR20291_3538
FN545816.1  EMBL    CDS     4189100 4189807 .   +   0   CDR20291_3538
FN545816.1  EMBL    gene    4189839 4190024 .   -   .   ID=gene-CDR20291_3539

Файл имеет около 8000 строк. Я хочу использовать awk и искать каждую строку, которая имеет «+» в 7-м поле, а также «CDS» в 3-м поле, начиная со строки 3801 до конца.

Это следует использовать как условие:

awk '($7 ~ /+/ && $3 ~ /CDS/) {print $0}' 

Однако, не знаю, как дать указание начать с определенной строки. Я пытался (безуспешно):

awk 'BEGIN NR>=3801 {($7 ~ /+/ && $3 ~ /CDS/)} {print $0}'

Спасибо, TP

1 Ответ

0 голосов
/ 08 ноября 2018

возможно, вы хотите точное совпадение, а не регулярное выражение?

$ awk 'NR>3800 && $7=="+" && $3=="CDS"' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...