다음과 비슷한 파일이 있다고 가정하십시오.
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
답변
통하다 어 wk:
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에 공급하고 중복 줄을 계산하십시오.