Да, вы можете сделать это с помощьюgrep
:
grep -c 'gene.*+' file
Это будет искать строки, где слово gene
появляется первым и как отдельное слово (\b
означает «слово -разрыв» ), а затем, в той же строке, у вас также есть +
как отдельное слово. Флаг -c
указывает grep
напечатать количество совпадающих строк. Если вам также нужно найти случаи, когда +
стоит перед gene
, вы можете сделать:
grep -Ec '(gene.*\+)|(\+.*gene)' file
Это, однако, также будет соответствовать таким вещам, как Eugene+Mary came for dinner
, что, вероятно, не то, что вам нужно. Учитывая слова, которые вы ищете, я предполагаю, что вы просматриваете файлы gff/gtf, поэтому вы можете сделать что-то более сложное и искать только gene
в третьем поле каждой строки и +
в в-седьмых, в строках, которые не начинаются с #
(, заголовки gff ). Если это действительно то, что вам нужно, вы можете сделать:
awk -F"\t" '!/^#/ && $3=="gene" && $7=="+"{c++}END{print c}'