2013-07-12 3 views
16

큰 텍스트 파일이 있습니다. 정확한 단어 "DUSP1"이 포함 된 모든 줄을 추출해야합니다. 라인의 다음 예 :Grep은 전체 단어 만 추출합니다.

9606 ENSP00000239223 DUSP1 BLAST 
9606 ENSP00000239223 DUSP1-001 Ensembl 

나는 첫 번째 줄 수 있지만 두 번째를 검색 할 수 있습니다.

나는대로 몇 가지 명령을 시도 :

grep -E "^DUSP1" 
grep '\<DUSP1\>' 
grep '^DUSP1$' 
grep -w DUSP1 

그러나 그들 중 누구도 제대로 작동하지 않습니다. 어떤 옵션을 사용해야합니까?

+0

"정확한 단어"는 정확히 어떻게 정의되어 있습니까? 그리고 세 번째 예제는 "DUSP1"이라는 단어 만있는 행을 찾습니다 ... "^ DUSP1 [[: space :]] +"가있는 행을 원하십니까? –

+3

샘플 파일 내용을 제공 할 수 있습니까? 2, 3, 4 번째 명령이 저에게 효과적입니다. – falsetru

답변

13

문제는 대시 (-)이 단어 구분 기호로 grep 인 것으로 간주됩니다.

이 명령을 시도해야합니다 :

grep '\sDUSP1\s' file 

워드의 주위에 공간을가 있음을 확인 할 수 있습니다.

+0

내 편집 게시물보기 –

+0

예! 위대한 작품! 감사합니다 –

2

말했다 sputpick 무엇에 추가, 그 일 또는 수 중 다음 DUSP1가 줄의 끝입니다

grep '\sDUSP1$' file 

합니다. 정확히 전체 단어를 grep을하려면

29

,이 같은 단어 경계를 사용할 수 있습니다

grep '\bDUSP1\b' 

이 초기에 정확한 단어와 말과 일치합니다.

+5

이것은 받아 들여진 응답 일 것입니다, 항상 공백 전후에 (마지막 단어는 어떨까요?). – user3671607

+1

좋습니다. 또한'setting = DUSP1'과'my/folder/to/DUSP1'과 일치하지만'DUSP123'은 일치하지 않습니다. – vikingsteve

+0

Windows 버전의 GNU grep에 큰 따옴표를 사용해야했습니다. 작은 따옴표가 작동하지 않았습니다. –