grep 일치 라인을 피하는 방법 -

grep 일치 라인을 피하는 방법 -

grep을 사용하여 파일에서 일치하는 줄만 가져오려고 합니다. 예를 들어 다음 표현식을 사용할 때 문제가 발생합니다.

grep -w AFFX-KIT-000088 textfile

다음을 반환합니다.

AFFX-KIT-000088-A
AFFX-KIT-000088

그러나 저는 AFFX-KIT-000088 표현식과 정확히 일치하는 항목만 원합니다. 나는 -F -E를 시도하고 인용했습니다. 줄을 파악해야 하는 텍스트 파일은 매우 커서 수정할 수 없습니다. 즉, 처리하는 데 시간이 오래 걸리기 때문에 많은 단계를 포함하지 않는 답변이 필요하다는 의미이기도 합니다.

노트:

파일은 실제로 상당히 크고 열이 많습니다(grep에 사용한 열뿐만 아니라).

답변1

grep -x 'AFFX-KIT-000088' file

-x의 일치충분히철사.

-F정규식 대신 문자열을 일치시킬 때 추가 할 수도 있습니다 . 이로 인해 작업 속도가 빨라질 수 있습니다.

해당 옵션은 "단어 문자"가 아니기 -w때문에 여기서는 작동하지 않습니다 . -따라서 AFFX-KIT-000088in 의 하위 문자열 AFFX-KIT-000088-A은 완전한 단어입니다.

[[:alnum:]_]"단어 문자" 는 영숫자와 밑줄이 일치하는 문자입니다 .


다중 열 데이터에서 탭으로 구분된 필드가 열 3에서 일치한다고 가정합니다.

awk -F '\t' '$3 == "AFFX-KIT-000088"' file

즉, 세 번째 필드를 특정 문자열과 비교합니다.

이러한 조건에 연관된 작업이 없는 경우 기본 작업은 조건이 충족되면 전체 입력 레코드를 인쇄하는 것입니다.진짜. 필드의 데이터만 인쇄하려는 경우:

awk -F '\t' '$3 == "AFFX-KIT-000088" { print $3 }' file

관련 정보