답변:
uniq 의 기본 동작은 7 칸 너비의 줄에서 빈도를 오른쪽으로 조정 한 다음 하나의 공백으로 항목과 빈도를 구분하는 것입니다.
출처 : https://www.thelinuxrain.com/articles/tweaking-uniq-c
sed로 선행 공백을 제거하십시오.
$ sort input | uniq -c | sort -nr | sed 's/^\s*//' > output
perl -pe 's/ *(\d+) /$1\t/'
( 여기 다른 대안 ) 과 같은 탭으로 분리 할 수 있습니다 . 또한 xclip -selection c
스프레드 시트에 직접 붙여 넣기 위해 클립 보드로 파이프합니다 .
더 많은 유연성을 위해 다른 정렬 도구를 사용할 수 있습니다. 파이썬은 그러한 도구 중 하나입니다.
#!/usr/bin/python3
import sys, operator, collections
counter = collections.Counter(map(operator.methodcaller('rstrip', '\n'), sys.stdin))
for item, count in counter.most_common():
print(count, item)
이론적으로 이것은 sort
위의 프로그램이 정렬 된 목록 대신 중복 행을 식별하기 위해 해시 테이블을 사용하기 때문에 큰 입력 의 도구 보다 훨씬 빠릅니다 . (아마도 동일한 순서의 줄을 자연스러운 순서 대신 임의의 순서로 배치합니다.이 수정은 여전히 두 번의 sort
호출 보다 빠릅니다 .)
당신이 출력 형식에 더 많은 유연성을 원하는 경우에 당신은에 볼 수 print()
및 format()
내장 함수.
예를 들어, 최대 7 개의 선행 0과 함께 8 진수로 숫자를 인쇄하고 NUL 줄 종결자가있는 공백 문자 대신 탭을 표시하려면 마지막 줄을 다음으로 바꿉니다.
print(format(count, '08o'), item, sep='\t', end='\0')
스크립트를 파일에 저장하고이라고 말한 sort_count.py
다음 Python으로 호출하십시오.
python3 sort_count.py < input