트위트가 포함 된 텍스트 파일이 있으며 트윗에서 단어가 언급 된 횟수를 계산해야합니다. . 예를 들어 파일에는 다음이 포함됩니다.

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 -lwc 유틸리티에 줄 수를 계산하도록 지시합니다. 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>

  • 단어가 한 줄에 두 번 이상 나오는 경우 결과가 올바르지 않습니다.
  • 답글 남기기

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