트위트가 포함 된 텍스트 파일이 있으며 트윗에서 단어가 언급 된 횟수를 계산해야합니다. . 예를 들어 파일에는 다음이 포함됩니다.
Apple iPhone X is going to worth a fortune The iPhone X is Apple"s latest flagship iPhone. How will it pit against it"s competitors?
파일에서 iPhone이라는 단어가 몇 번 언급되었는지 세고 싶다고 가정 해 보겠습니다. 그래서 여기에 제가 시도한 것이 있습니다.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
확실히 작동하지만 유닉스의 “wc”명령에 대해 혼란 스럽습니다. 차이점은 무엇입니까? 다음과 같이 시도하면 :
cut -f 1 Tweet_Data | grep -c "iPhone"
대신 -c가 사용됩니까?이 두 가지 모두 트윗으로 가득 찬 대용량 파일에서 다른 결과를 생성하고 혼란 스럽습니다. 어떻게 작동하는지. 발생 횟수를 계산하는 올바른 방법은 무엇입니까?
댓글
답변
그러한 요구 사항이 있다면 GNU grep ( -o
옵션 의 경우)을 사용하고 그런 다음 wc
: 총 발생 횟수 계산 :
$ grep -o -i iphone Tweet_Data | wc -l 3
일반 grep -c
는 일치하는 총 단어 수가 아니라 일치하는 줄 의 수를 계산합니다. -o
옵션을 사용하면 grep이 원래 줄에서 일치 항목이 몇 번 발견되었는지에 관계없이 각 일치 항목을 자체 줄에 출력하도록 지시합니다.
wc -l
는 wc
유틸리티에 줄 수를 계산하도록 지시합니다. grep이 각 일치 항목을 자체 행에 넣은 후 입력에있는 단어의 총 발생 횟수입니다.
GNU grep을 사용할 수 없거나 원하는 경우 다음을 변환 할 수 있습니다. 각 단어가 한 줄에 표시되도록 tr
로 입력 한 다음 grep -c
를 사용하여 계산합니다.
$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3
답변
가장 쉬운 방법은
grep -wc "your_text" FileName
당신을위한 것입니다.
grep -wc "iPhone" Tweet_Data
댓글
- ' cool '와 같은 단어와 일치하면 cool 만 일치하고 ccooll은 일치하지 않으므로 단어 주변의 공백이 중요합니다.
li>
cut -f1
은 여기에서는 '별로하지 않는 탭입니다.wc -l
가 정말 정확한 개수를 제공하고 있습니까? 여기에 2 개가 표시되지만 " iPhone "의 인스턴스 3 개를 계산합니다.