텍스트 파일이 있습니다 :

deiauk 1611516 afsdf 765 minkra 18415151 asdsf 4152 linkra sfsfdsfs sdfss 4555 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4 deiauk 1611516 afsdf ddfgfgd luktol1 4545 4 9 luktol 1 

및 I 정확히 deiauk와 일치하고 싶습니다. 이렇게하면 :

grep "deiauk" file.txt 

결과는 다음과 같습니다.

deiauk 1611516 afsdf 765 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4 

하지만 이것 만 필요합니다 :

deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd 

-w 옵션이 있다는 것을 알고 있지만 내 문자열은 전체를 마킹해야합니다. 줄.

댓글

  • 실제로 grep -w를 사용해 보셨습니까? (이 옵션은 정확히 해당 목적을위한 것입니다. , 저에게 적합합니다.)-참고 : -x 옵션은 전체 줄과 일치합니다.
  • " 정확하게 deiauk / "이 항목 만 필요합니다 : deiauk 1611516 afsdf 765 " -어떤 것이 필요합니까?

답변

다음 중 하나를 사용해보십시오.

grep -w "deiauk" textfile grep "\<deiauk\>" textfile 

댓글

  • 문자열 끝에 대시 ()가 있으면이 스크립트는 결과를 가져 오지만 예상치 못한 결과입니다.
  • 올바른 @Eve rt : 단어에는 알파벳 문자, 숫자, 밑줄 만 포함되어 있으므로 약어 나 기타 항목에 하이픈이 연결되어 있으면 작동하지 않습니다.
  • @Cyrus vi / vim * 명령.
  • 예를 들어 org.apache.avro avro가 (*로 시도)
  • 정확한 경우 -wE 사용 여러 단어 일치 (부울 OR)

답변

GNU 및 \b :

grep "\bdeiauk\b" file 

출력 :

 deiauk 1611516 afsdf 765 

참조 : http://www.regular-expressions.info/wordboundaries.html

의견

  • 감사합니다. 왜 이것이 저에게 효과가 없습니까? echo "Enter login: " $vard grep -E "$\bvard\b" file.txt
  • grep "\b${vard}\b" file.txt
  • 사용해보기

  • 여전히 작동하지 않음 ' 작동하지 않음 : /
  • ' read : read -p "Enter login: " vard; grep "\b${vard}\b" file.txt

답변

grep-P (PCRE)를 지원하며 다음을 수행 할 수 있습니다.

$ grep -P "(^|\s)\Kdeiauk(?=\s|$)" file.txt deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd 

댓글

  • 하이픈으로 연결된 단어에 적용되는 유일한 답변입니다.
  • \K ( PCRE 재설정 경기 시작)이 필요합니까? 이 제안 된 솔루션은 그것 없이도 잘 작동하는 것 같습니다.

답변

실제 데이터에 따라 공백이 뒤에 오는 단어를 찾습니다.

grep "deiauk " file.txt 

줄의 시작 부분에 있어야한다는 것을 알고 있다면 다음을 확인하세요.

grep "^deiauk " file.txt 

댓글

  • 슬프게도이 이외의 모든 답변은 정확하지 않습니다.
  • @Shatu 감사합니다! 따라서 '가 " 맨 위로 버블 링하는 데 걸리는 시간을 확인합니다. " … 저는 ' 이전 질문에 답을 추가하는 것을 좋아하기 때문에 궁금합니다. 그렇다고 생각하지만 의심 스럽습니다. 나에게는 좋지만 실제로 독자에게는 유용합니다. 이를 좋은 사례로 만들기 위해 다른 답변이 누락 된 부분을 요약하는 댓글을 작성해달라고 부탁해도 될까요?
  • (1) 10,000 회에 도달 한 것을 축하합니다. 이제이 답변이 이전에 주어졌고 삭제되었음을 볼 수있는 권한이 있습니다. (2) 항상 말한 내용 을 기반으로 질문에 최대한 광범위하게 답변하고 샘플 데이터에만 적용되는 답변을 제공하지 않는 것이 좋습니다. 질문의 예제 데이터에서 열이 공백으로 구분 된 것으로 보이지만 지정되지 않았습니다. 다른 모든 답변은 탭으로 구분 된 열에서도 작동합니다. (3) ^를 추가하여 tachomi의 (삭제 된) 답변의 치명적인 결함을 피했습니다.하지만 다른 모든 답변은 작동합니다… (계속)
  • ( 계속)… 문자열이 첫 번째 필드가 아닌 다른 필드에 나타나는 경우. (4) 또한 deiauk 이 마지막 필드 (즉, 그 뒤에 아무것도 없음)이면 다른 모든 답변이 작동합니다.

Answer

-x가 저에게 효과적이라는 것을 알았습니다.

예제

$ grep -inx -d skip "favicon.ico" * test.txt:1:favicon.ico 

Grep 매뉴얼

-x, --line-regexp Select only those matches that exactly match the whole line. For a regular expression pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $. 

댓글

  • 하이픈이 포함 된 전체 행과 1 : 1 일치의 경우 -x 유일한 옵션입니다. 예를 들어 grep -w "abc" <<<"abc-hac101-bb0"는 일치하지만 grep -x "abc" <<<"abc-hac101-bb0"는 일치하지 않습니다

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다