리눅스 유니크한 값 개수 세는 명령어

demixing의 이미지

안녕하세요?

현재 다음과 같은 데이터가 있었습니다.

(쓰레기값),(숫자)

예를들면

12awelkh,1
23kcjrl3,5
23krcjlk,4
134c9sdk,5
124c98cc,6
134csdkl,1

이를 sort 명령어를 사용해 다음과 같이 바꿨습니다.
(명령어 - sort -t "," -k 2 -n 파일명)

12awelkh,1
134csdkl,1
23krcjlk,4
134c9sdk,5
23kcjrl3,5
124c98cc,6

현재 위와 같이 정렬된 파일을 가지고 있는데요,
원하는 결과는 다음과 같습니다.

(숫자) (갯수)
1 2
4 1
5 2
6 1

즉, 1이 2개, 4는 1개, 5는 2개, 6은 1개 입니다.
이를 결과로 만드는 명령어가 있을까요?

김정균의 이미지

uniq 명령을 이용하시면 됩니다

cat SOME_FILE | awk -F',' '{print $2}' | sort -V | uniq -c
demixing의 이미지

너무 잘 작동합니다!!

혹시 한가지만 더 여쭈어보고 싶은게
결과 파일을 보면
(숫자) (갯수) 형태가 아니라

(갯수) (숫자) 형태로 나오는데
이걸 반전시킬수 있나요?
uniq --help로 찾아보니까 uniq에는 그런 옵션은 없는걸로 보였습니다..ㅜ

라고 질문을 했었는데 아래분이 답변을 주셨네요...!!

.의 이미지

$ echo '12awelkh,1
23kcjrl3,5
23krcjlk,4
134c9sdk,5
124c98cc,6
134csdkl,1' | cut -d ',' -f2 | sort -n | uniq -c | awk '{print $2, $1}'
1 2
4 1
5 2
6 1
demixing의 이미지

cat filename | cut -d ',' -f2 | uniq -c | awk '{print $2, $1}'

이렇게 하니까 되네용 와 리눅스는 끝이 없네요 감사합니다...!!

이게 원리가 혹시
awk '{print $2, $1}' 를 안붙이면 defalut로 당연히 awk '{print $1, $2}' 형태로 출력되는데
awk '{print $2, $1}' 를 써서 위치를 바꿔주는 역할인가요??

demixing의 이미지

답글 달아주신 두분 감사합니다. 질문들은 다 해결되었습니당

cat SOME_FILE | awk -F',' '{print $2}' | sort -V | uniq -c | awk '{print $2, $1}'

해보니까 원하는 결과가 나오네요 ㅎㅎㅎㅎ감사합니다