텍스트 파일이 있습니다 :
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 "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"
는 일치하지 않습니다
grep -w
를 사용해 보셨습니까? (이 옵션은 정확히 해당 목적을위한 것입니다. , 저에게 적합합니다.)-참고 :-x
옵션은 전체 줄과 일치합니다.deiauk
/ "이 항목 만 필요합니다 :deiauk 1611516 afsdf 765
" -어떤 것이 필요합니까?