
다음 명령을 사용하고 있습니다. x.txt | grep -w 'in' 다음과 같은 답변을 얻습니다. in into ... 등.
나는 단지 대답을 원합니다: in
명령을 어떻게 수정해야 합니까?
답변1
먼저, 명령은 다음과 같아야 합니다.
grep -w in x.txt
현재 파이프가 작동하지 않으며 cat
파일을 파이프하는 것은 불필요합니다. grep
파일을 직접 읽을 수 있습니다.
둘째, -w
당신이 원하는 것을 정확하게 수행합니다. 매뉴얼 페이지에서:
-w, --word-regexp
전체 단어를 구성하는 일치 항목이 포함된 줄만 선택하세요. 테스트에서는 일치하는 하위 문자열이 줄의 시작 부분에 있거나 단어가 아닌 구성 문자가 앞에 있어야 한다는 것입니다. 마찬가지로, 줄 끝에 있거나 단어가 아닌 구성 문자가 뒤에 와야 합니다. 단어를 구성하는 문자는 글자, 숫자, 밑줄입니다.
grep
반환합니다완전한 라인하지만 그 단어가 나오는 곳은 어디입니까? 그것이 의 기능이다 grep
; 그것 때문에 헷갈리지 않으셨는지 확인하기 위해 언급합니다.
만약 너라면단지당신이 말한 대로 단어를 반환하고 싶다면 할 수 있습니다
grep -ow in x.txt
이후에는 -o
일치하는 부분만 반환하지만 이는 매우 성과가 없는 것 같습니다.당신은 정말로 무엇을 하려고 하는가?
편집하다:명시적인 예:
$ cat test
word in word
within word
word word
$ grep -w in test
word in word
"내부"가 일치하지 않습니다.
편집2:다른 예시:
$ grep '\<in\>' test
word in word
편집3:문제는 스웨덴어 문자에 있는 것으로 알려졌습니다. 환경 변수 LANG
를 sv_SE.UTF-8
.https://stackoverflow.com/questions/9260293/egrep-accented-characters-not-recognised-as-part-of-a-word가장 쉬운 솔루션으로 UTF-8 특정 작업에 Perl을 사용할 것을 제안합니다.
편집4:sed
스웨덴어 문자로 작업하는 데 사용할 수 있는 것 같습니다 .
$ cat test
word den word
avträden word
word word
$ sed -n '/\bden\b/p' test
word den word
$ sed -n '/\<den\>/p' test
word den word
이는 실용적인 솔루션이지만 이 작업에 효과가 있기를 바랍니다.