[file] 파일에서 중복 행을 찾고 각 행이 복제 된 횟수를 계산합니까?

다음과 비슷한 파일이 있다고 가정하십시오.

123
123
234
234
123
345

‘123’이 여러 번 복제되었는지, ‘234’가 여러 번 복제되었는지 등을 찾고 싶습니다. 이상적으로 출력은 다음과 같습니다.

123  3
234  2
345  1



답변

한 줄에 하나의 숫자가 있다고 가정합니다.

sort <file> | uniq -c

--count예를 들어 Linux에서 GNU 버전과 함께 더 자세한 플래그를 사용할 수도 있습니다 .

sort <file> | uniq --count


답변

이것은 것이다 중복 라인만을 인쇄 건의를 :

sort FILE | uniq -cd

또는 GNU 긴 옵션 (Linux의 경우) :

sort FILE | uniq --count --repeated

BSD와 OSX 당신은 그렙 사용해야하는 독특한 라인 필터링 :

sort FILE | uniq -c | grep -v '^ *1 '

주어진 예에서 결과는 다음과 같습니다.

  3 123
  2 234

한 번만 나타나는 줄을 포함하여 모든 줄의 개수인쇄 하려면 다음을 수행하십시오.

sort FILE | uniq -c

또는 GNU 긴 옵션 (Linux의 경우) :

sort FILE | uniq --count

주어진 입력에 대한 출력은 다음과 같습니다.

  3 123
  2 234
  1 345

가장 빈번한 줄로 출력정렬하려면 다음을 수행하여 모든 결과를 얻을 수 있습니다.

sort FILE | uniq -c | sort -nr

또는 중복 행만 얻으려면 가장 자주 시작하십시오.

sort FILE | uniq -cd | sort -nr

OSX와 BSD에서 마지막 것은 다음과 같습니다.

sort FILE | uniq -c | grep -v '^ *1 ' | sort -nr


답변

여러 파일에서 중복 행을 찾아서 계산하려면 다음 명령을 시도하십시오.

sort <files> | uniq -c | sort -nr

또는:

cat <files> | sort | uniq -c | sort -nr


답변

통하다 :

awk '{dups[$1]++} END{for (num in dups) {print num,dups[num]}}' data

에서 awk 'dups[$1]++'명령 변수는 $1컬럼 1의 전체 내용을 보유하고 대괄호 배열 액세스한다. 따라서 data파일 의 첫 번째 행 열마다 이름 dups이 지정된 배열의 노드 가 증가합니다.

마지막 으로 변수로 dups배열을 반복 num하고 저장된 숫자를 먼저 인쇄 한 다음 중복 값의 수를로 인쇄합니다 dups[num].

입력 파일에는 일부 줄의 끝에 공백이 있습니다.이를 지우면 $0위의 $1명령 대신 사용할 수 있습니다 . 🙂


답변

“Windows PowerShell” 을 사용하는 Windows에서는 아래에서 언급 한 명령을 사용하여이 작업을 수행했습니다.

Get-Content .\file.txt | Group-Object | Select Name, Count

또한 where-object Cmdlet을 사용하여 결과를 필터링 할 수 있습니다

Get-Content .\file.txt | Group-Object | Where-Object { $_.Count -gt 1 } | Select Name, Count


답변

표준 Unix 쉘 및 / 또는 cygwin 환경에 액세스 할 수 있다고 가정합니다.

tr -s ' ' '\n' < yourfile | sort | uniq -d -c
       ^--space char

기본적으로 : 모든 공백 문자를 줄 바꿈으로 변환 한 다음 변환 된 출력을 정렬하여 uniq에 공급하고 중복 줄을 계산하십시오.


답변