Unix에서 여러 기준을 충족하는 줄을 검색하는 방법은 무엇입니까?

Unix에서 여러 기준을 충족하는 줄을 검색하는 방법은 무엇입니까?

단어/패턴 "gene"과 "+"가 모두 포함된 줄 수를 찾고 싶습니다. grep으로 이것을 할 수 있습니까?

답변1

예, 다음을 통해 이 작업을 수행할 수 있습니다 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}'

관련 정보