2017-09-28 3 views
2

i 대시가 "grep -w"문자열에있는 경우 고유하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?대시가 문자열에있는 경우 grep -w는 고유하지 않습니다.

예 :

을 File1 :

football01
football01test

# grep -iw ^football01 
football01 

있는 File2 :

football01
football01 테스트

# grep -iw ^football01 
football01 
football01-test 
+0

더 구체적으로 질문 해주세요. 또한 코드 태그에서 예상 출력을 언급하십시오. – RavinderSingh13

+1

'-w' 플래그는 grep을 전체 단어에만 매치시키고 '-'는 단어 분리 기호로 간주합니다. 'grep -i "^ football01 $"' – 0x5453

+0

@Michael을 사용할 수있는 전체 줄에서 일치 시키려고한다면, 답변 중 하나가 도움이된다면, 질문에 대한 답변을 닫을 수있는 대답으로 표시해 주실 수 있습니까? ?Hannu의 대답은 더 빨리 발표되었고 수용의 더 나은 후보자입니다. – zedfoxus

답변

3

이 예상되고 문서화 된 동작입니다 : 당신이 대시를 추가하면

-w, --word-regexp 
      Select only those lines containing matches that form whole words. The test is that the 
      matching substring must either be at the beginning of the line, or preceded by a non-word 
      constituent character. Similarly, it must be either at the end of the line or followed 
      by a non-word constituent character. Word-constituent characters are letters, digits, 
      and the underscore. 

, 그것은 대시로 첫 번째 단어를 종료는 "비입니다 단어 구성 문자 "입니다. 단어를 함께 쓰면 단어 regexp grep은 하나의 단어로 취급하고 일치하지 않습니다.

정확히 원하는 것은 무엇입니까? 당신은 단지 당신의 라인 football01 아무것도 다른 경우 알고 싶은 경우에 당신이 뭔가를 달성하려면

, 당신은 그것이 무엇인지 설명해주십시오 수

grep -i "^football01$" 

로 할 수 있습니다.

1

-w 스위치는 단어 정규 표현식입니다. file1에서 football01test는 단어이고 file2는 football01이며 test는 하이픈으로 구분 된 두 단어입니다.

남자 GREP 말한다이 모든 단어를 일치를 포함 -w

선택 만 라인. 테스트는 일치하는 부분 문자열이 라인의 시작 부분에 이거나, 단어가 아닌 구성 요소 인 문자 앞에 나와야합니다. 마찬가지로 행은 행 끝에 있거나 비 단어 구성 문자가 따라 와야합니다. 단어 구성 문자는 문자, 숫자 및 밑줄입니다. 전체 단어로 football01test 일치하지 않는 football01 이후

, 당신은 그렙에서 해당 정보를 얻지 못하고있다.

grep -i ^football01 file1.txt을 수행하면 두 줄을 모두 얻을 수 있습니다.