텍스트 파일에서 단어 발생 횟수 계산


31

트윗이 포함 된 텍스트 파일이 있는데 트윗에 단어가 언급 된 횟수를 세어야합니다. 예를 들어, 파일에는 다음이 포함됩니다.

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가 사용됩니까? 이 두 가지 결과는 트윗으로 가득 찬 큰 파일에서 다른 결과를 산출하며 어떻게 작동하는지 혼란 스럽습니다. 발생을 계산하는 올바른 방법은 어떤 방법입니까?


cut -f1탭을 기반으로 절단하고 있습니다. 당신은 확실히되어 있는지 wc -l정말 당신에게 정확한 수를주고있다? 여기에 2가 표시되지만 "iPhone"의 3 개 인스턴스를 계산합니다.
Jeff Schaller


답변:


54

나는합니다 (에 대한 GNU의 그렙 사용하는 것이 이러한 요구 사항을 감안할 때 -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

1

가장 쉬운 방법은

grep -wc "your_text" FileName

당신을 위해서라면

grep -wc "iPhone" Tweet_Data

그러나 매우 깔끔한 대답이지만 'cool'과 같은 단어를 일치시키는 경우에는 근사하고 일치하지 않을 뿐이므로 단어 주위의 공백이 중요합니다.
jasonleonhard

1
단어가 한 줄에 두 번 이상 나타날 경우 결과가 올바르지 않습니다.
hek2mgl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.