일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Plating
- 개발자 채용연계형인턴
- 식단일기
- Linux
- 플레이팅
- 자바 암호화 알고리즘
- 개발자 코딩테스트
- 신입 개발자 자바 면접 질문
- .dockerignore
- docker
- 프로그래머스
- 개발자 인턴
- 자바 stream
- 개발자 정규직
- 식단
- 도커
- 신입 개발자 필수 면접 질문
- 신입 개발자 면접
- 개발자 면접
- 신입 개발자 면접 질문
- 개발자 면접 질문
- 직장인점심구독
- docker image
- 자바 암호화 복호화
- 샐러드
- 셰프의찾아가는구내식당
- 코딩테스트 연습
- 자바 암호화
- 신입 개발자 자바 면접
- 프로그래머스 코딩테스트
- Today
- Total
달리는 두딘
[Linux] sort, uniq 사용법 본문
이번 sort와 uniq는
정렬과 중복 처리에 관한 명령어로
awk와 함께 쓰이는 것을 볼 수 있었습니다.
서버 인입(REQ-URL) 시 초별로 카운트하는 상황에 사용됐었고,
이렇게 파악해서 Connection Pool을 조정한다고 알려주셨습니다.
그런 의미로 공부해봅시다~!!!!!!!!
sort
Description
파일의 내용을 정렬하여 화면에 출력합니다.
Options
- 위치 지정 옵션
- -k: key를 기준으로 정렬
- -t: 필드 구분자로 데이터 컬럼을 나눠줌(기본 값은 공백)
- 정렬 기준 옵션
- -f: 대소문자 무시
- -g: 일반 숫자 정렬
- -n: 숫자 정렬
- -r: 내림차순 정렬
- -u: 정렬 후 행이 같을 경우 중복 제거
-g와 -n의 차이는 이곳에 잘 나와있습니다.
요약하자면 -g는 숫자를 부동 소수점으로 비교하므로 느리고 반올림하는 과정에서 오류가 발생할 수 있습니다.
Examples
sort.txt 파일을 정렬해보겠습니다.
sort.txt 파일 전체 보기
sort sort.txt
> sort sort.txt
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
27c50484-850d-4477-9893-1678b993c1b8;William;14
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
아무 옵션을 주지 않았기 때문에 가장 앞 글자 기준으로 정렬되었습니다.
sort -t ";" -k 3 sort.txt
> sort -t ";" -k 3 sort.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
27c50484-850d-4477-9893-1678b993c1b8;William;14
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
세미콜론(;)을 기준으로 컬럼을 나눠 3번째 컬럼(나이)을 기준으로 정렬하였는데 문자열 정렬 옵션으로 동작하였습니다.
sort -t ";" -k 3 -n sort.txt
> sort -t ";" -k 3 -n sort.txt
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
27c50484-850d-4477-9893-1678b993c1b8;William;14
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
위의 예제에 -n 옵션을 추가하여 나이를 정렬하는데 숫자 정렬이 된 것을 확인할 수 있습니다.
sort -t ";" -k 3 -n -r sort.txt
> sort -t ";" -k 3 -n -r sort.txt
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
27c50484-850d-4477-9893-1678b993c1b8;William;14
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
위의 예제에서 -r 옵션을 추가하여 역정렬 된 것을 확인할 수 있습니다.
--debug
> sort -t ";" -k 3 -n -r --debug sort.txt
Memory to be used for sorting: 8589934592
Number of CPUs: 8
Using collate rules of ko_KR.UTF-8 locale
Decimal Point: <.>
Thousands separator: <,>
Positive sign: <+>
Negative sign: <->
sort_method=mergesort
; k1=<11>, k2=<16>; s1=<9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16>, s2=<1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11>; cmp1=-1
; k1=<11>, k2=<11>; s1=<1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11>, s2=<e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11>; cmp1=0
; cmp2=52
; k1=<11>, k2=<16>; s1=<9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16>, s2=<e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11>; cmp1=-1
; k1=<7>, k2=<11>; s1=<1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11>, s2=<c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7>; cmp1=-1
; k1=<7>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7>; cmp1=-1
; k1=<17>, k2=<9>; s1=<1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9>, s2=<e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17>; cmp1=1
; k1=<13>, k2=<14>; s1=<27c50484-850d-4477-9893-1678b993c1b8;William;14>, s2=<23493703-dfa7-433f-abd3-dda0b8ded865;David;13>; cmp1=-1
; k1=<17>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17>; cmp1=1
; k1=<9>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9>; cmp1=-1
; k1=<9>, k2=<7>; s1=<122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7>, s2=<1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9>; cmp1=1
; k1=<16>, k2=<14>; s1=<27c50484-850d-4477-9893-1678b993c1b8;William;14>, s2=<9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16>; cmp1=1
; k1=<11>, k2=<14>; s1=<27c50484-850d-4477-9893-1678b993c1b8;William;14>, s2=<e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11>; cmp1=-1
; k1=<11>, k2=<13>; s1=<23493703-dfa7-433f-abd3-dda0b8ded865;David;13>, s2=<e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11>; cmp1=-1
; k1=<16>, k2=<17>; s1=<e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17>, s2=<9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16>; cmp1=-1
; k1=<10>, k2=<16>; s1=<9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16>, s2=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>; cmp1=-1
; k1=<14>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<27c50484-850d-4477-9893-1678b993c1b8;William;14>; cmp1=1
; k1=<13>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<23493703-dfa7-433f-abd3-dda0b8ded865;David;13>; cmp1=1
; k1=<11>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11>; cmp1=1
; k1=<11>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11>; cmp1=1
; k1=<7>, k2=<10>; s1=<afa9061f-cc05-4470-bc28-e77b9a58b517;James;10>, s2=<c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7>; cmp1=-1
; k1=<7>, k2=<9>; s1=<1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9>, s2=<c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7>; cmp1=-1
; k1=<7>, k2=<7>; s1=<c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7>, s2=<122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7>; cmp1=0
; cmp2=-50
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
27c50484-850d-4477-9893-1678b993c1b8;William;14
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
--debug 옵션을 사용하면 정렬이 어떻게 동작하였는지 확인할 수 있습니다.
컬럼 지정
> sort -t ";" -k 2 sort.txt
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
27c50484-850d-4477-9893-1678b993c1b8;William;14
-k 2 이런식으로 옵션을 지정하게 되면 두 번째 컬럼 뒷부분을 다 포함하여 정렬됩니다.
> sort -t ";" -k 2,2 sort.txt
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
27c50484-850d-4477-9893-1678b993c1b8;William;14
-k 2,2 는 2번째 컬럼에서 2번째 컬럼까지만 비교하라는 뜻으로 예제 적절하지 않아서 바로 위의 예제 결과와 동일하네요 😅
정렬 우선순위 지정
> sort -t ";" -k 3,3 -k 2,2 sort.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
27c50484-850d-4477-9893-1678b993c1b8;William;14
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
-k 옵션을 여러 개 사용하여 정렬 우선순위를 지정할 수 있습니다.
위의 예시는 나이(문자열)로 정렬한 뒤, 나이가 같으면 이름으로 정렬하고있음을 확인할 수 있습니다.
uniq
Description
파일의 내용을 중복된 내용을 제거하고 출력하는 명령어 입니다.
Options
- -d: 중복된 내용만 출력
- -u: 고유한 내용만 출력
- -i: 대소문자 무시
Examples
sort.txt 파일을 수정하여 중복된 값을 가지도록 수정하여 uniq.txt 파일을 생성하였습니다.
uniq.txt 파일 전체 보기
uniq uniq.txt
> uniq uniq.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
27c50484-850d-4477-9893-1678b993c1b8;William;14
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7%
uniq 명령어를 사용했을 때 기본 옵션(중복제거)으로 동작하였습니다.
uniq -d uniq.txt
> uniq -d uniq.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
27c50484-850d-4477-9893-1678b993c1b8;William;14
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
-d 옵션을 사용하여 중복된 내용만 출력하였습니다.
nl과 같이 사용하기
원래 파일의 길이와 중복 제거한 길이, 중복만 포함한 길이를 각각 출력해보겠습니다.
> cat uniq.txt | nl
1 afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
2 afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
3 afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
4 122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
5 1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
6 1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
7 1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
8 e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9 27c50484-850d-4477-9893-1678b993c1b8;William;14
10 27c50484-850d-4477-9893-1678b993c1b8;William;14
11 27c50484-850d-4477-9893-1678b993c1b8;William;14
12 23493703-dfa7-433f-abd3-dda0b8ded865;David;13
13 9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
14 9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
15 9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
16 1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
17 e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
18 e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
19 e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
20 c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7%
> uniq uniq.txt| nl
1 afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
2 122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
3 1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
4 e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
5 27c50484-850d-4477-9893-1678b993c1b8;William;14
6 23493703-dfa7-433f-abd3-dda0b8ded865;David;13
7 9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
8 1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
9 e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
10 c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7%
> uniq -d uniq.txt | nl
1 afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
2 1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
3 27c50484-850d-4477-9893-1678b993c1b8;William;14
4 9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
5 e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
떨어져있는 중복 데이터
기존 파일에 아래 두 줄을 추가해보겠습니다.
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
9878141a-7dbb-42ce-a198-1a60b97a5fee;richard;16
다시 명령어를 실행해보면
> uniq uniq.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
27c50484-850d-4477-9893-1678b993c1b8;William;14
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
9878141a-7dbb-42ce-a198-1a60b97a5fee;richard;16
방금 추가한 Richard와 richard가 중복제거되지 않음을 확인할 수 있습니다.
이는 연속된 데이터에 대해서만 중복체크를 하기 때문인데요, 먼저 대소문자를 구별하지 않는 옵션을 사용하여 마지막 richard가 제거되는지 확인해보겠습니다.
-i
> uniq -i uniq.txt
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
27c50484-850d-4477-9893-1678b993c1b8;William;14
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
richard가 제거된 것을 확인할 수 있습니다.
그럼 연속되지 않은 중복데이터를 제거하는 방법을 알아보겠습니다.
uniq with sort
> sort -t ";" -k 2,2 -f uniq.txt | uniq -i
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
27c50484-850d-4477-9893-1678b993c1b8;William;14
sort 옵션을 이용해 이름에 해당하는 컬럼 기준으로 대소문자를 무시한 채 정렬하도록 하였고, 정렬된 이후 uniq 옵션을 이용해 역시나 대소문자를 무시하고 중복제거하도록 하여 정상적인 결과를 얻은 것을 확인할 수 있습니다.
반대로 중복된 데이터만 출력해보면
> sort -t ";" -k 2,2 -f uniq.txt | uniq -d
afa9061f-cc05-4470-bc28-e77b9a58b517;James;10
1a72c571-994f-4e2d-bfc0-26927aaa3164;John;9
9878141a-7dbb-42ce-a198-1a60b97a5fee;Richard;16
e3f8a602-b62e-4115-bbd6-0702cdb88afc;Thomas;11
27c50484-850d-4477-9893-1678b993c1b8;William;14
역시 정상적으로 동작하는 것을 확인할 수 있습니다.
마지막으로 중복되지 않은 값만 확인해보면,
> sort -t ";" -k 2,2 -f uniq.txt | uniq -u
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
9878141a-7dbb-42ce-a198-1a60b97a5fee;richard;16
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
이렇게 중복이 존재하는 행은 아예 삭제된 것을 확인할 수 있고, 여기에 대소문자 무시 옵션까지 추가하면,
> sort -t ";" -k 2,2 -f uniq.txt | uniq -u -i
c10c3715-ee97-42e8-b906-6d50558378f4;Charles;7
23493703-dfa7-433f-abd3-dda0b8ded865;David;13
1ac46560-3642-42bb-81af-ab0d882a7563;Joseph;11
e794eda6-b5c6-4ea8-8f2a-7cb877d4d5d6;Michael;17
122edbb8-bcc0-46d8-8f0c-3fa7b54369e9;Robert;7
richard 마저 제거된 것을 확인할 수 있습니다.
출처
'지식노트 > 도전! 리눅스!' 카테고리의 다른 글
[Linux] Tomcat 켜기 / 끄기 / 재가동 (0) | 2022.09.30 |
---|---|
[Linux] chown 사용법 (0) | 2022.09.29 |
[Linux] Vi Editor 사용법 (8) | 2022.09.27 |
[Linux] curl 사용법 (2) | 2022.09.15 |
[Linux] awk 사용법 (2) | 2022.09.14 |