각 텍스트의 인스턴스 수를 찾는 방법은 무엇입니까? [복사]

각 텍스트의 인스턴스 수를 찾는 방법은 무엇입니까? [복사]

그래서 도시로 구성된 열이 포함된 큰 파일이 있습니다. 각 도시의 총 인스턴스 수를 찾아 새 파일에 표시하는 프로그램을 작성하고 싶습니다. 어떻게 해야 하나요?

이건 예시이고 이보다 더 많은 값이 있습니다

파일이 다음과 같다면

City           
Manhattan   
Cork       
Manhattan  
Chennai
Chennai

출력은 어떻게 보여야 할까요?

City
Manhattan 2 
Cork      1
Chennai   2

답변1

다음을 사용하십시오 datamash.

datamash -g1 -s -H count 1 < infile

산출:

GroupBy(City)   count(City)
Chennai 2
Cork    1
Manhattan   2

답변2

Linux 내장 명령을 사용 sort하고 다음을 수행하십시오 uniq.

cat DATAFILE | sort | uniq --count

그러면 다음과 같은 내용이 제공됩니다.

  2 Chennai
  1 City           
  1 Cork       
  2 Manhattan

설명하다:uniq이는 일반적으로 중복 행을 제거하고 단일 인스턴스만 남기는 명령을 사용합니다 . 추가 반복 횟수를 내보내는 옵션 "--count"를 사용하세요. 이것이 작동 하려면 uniq행을 정렬해야 합니다. 그렇지 않으면 필요에 따라 중복 항목이 연속 행에 표시되지 않습니다. sort이는 정확히 행을 알파벳순으로 정렬하는 작업을 수행합니다.

다른 열 순서로 필요합니까? 첫 번째 줄을 무시해야 합니까? 그렇다면 도시 이름에 두 개 이상의 단어가 포함될 수 있는지도 알려주시기 바랍니다.

관련 정보