강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일내용정렬 마법사 sort 실무5편: 정렬의 꽃 유일정렬하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일내용정렬 마법사 sort 실무5: 정렬의 꽃 유일정렬하기



 

 

 

기본적으로 sort명령어는 동일하게 중복되는 내용을 개별적으로 취급한다.

 

 

 

 동일한 내용이 두개이상 존재하더라도 이를 모두 표시한다는 의미이다.

 

 

 

  하지만 동일하게 중복되는 내용을 하나로만 취급하여 정렬하는 방법이 매우 중요할 때가 있다.

 

 

 

 예를들어 웹로그에 남겨진 IP주소가 유일하게 몇 개인가를 카운트할 때라든가? 로그인 접속기록을 하고 있는 /var/log/secure로그파일내에서 어떤 사용자ID가 기록되어 있는가를 유일하게 확인한다든가 하는 방법들이 이에 해당된다.

 

 

 

 

 

이런 예를 보도록 하자. 이번에는 textfile2라는 파일의 내용을 아래와 같이 가정하여 예를들어 보겠다.

 

 

 

 textfile2라는 파일에는 아래와 같이 동일한 내용의 중복된 내용이 있다.

 

 

 

 다음은 textfile2의 내용이다.

 

 

 

 

 

[root@sulinux ~]# cat textfile2
3 three
3 three
4 four
4 four
1 one
1 one
5 five
5 five
2 two
2 two
[root@sulinux ~]#

 

 

 

중복된 것은 몇개가 되든 하나로 유일하게 취급하여 정렬하고자 한다면 -u옵션을 사용한다.

 

 

 

 

이것을 아래와 같이 기본정렬하면 다음과 같이 오름차순으로 정렬이 될 것이다.

 

 

 

 

 

[root@sulinux ~]# sort textfile2
1 one
1 one
2 two
2 two
3 three
3 three
4 four
4 four
5 five
5 five
[root@sulinux ~]#

 

위의 결과를 보면 동일한 내용이 중복되어 모두 표시되는 것을 볼 수가 있다.

 

 

 

 아래는 이런 중복된 행을 하나로 취급하여 유일하게 정렬을 한 것이다.

 

 

 

 

 

[root@sulinux ~]# sort -u textfile2
1 one
2 two
3 three
4 four
5 five
[root@sulinux ~]#

 

 

 

 

이렇게 중복된 내용을 하나로 취급하여 정렬하는 것을 유일정렬이라고하며 sort에서 -u옵션을 사용하면 유일정렬을 수행한다.

 

 

 

 

 

이번에는 유일하게 정렬하면서 내림차순(역순)정렬하는 예이다.

 

 

 

 아래 예를보면 textfile2라는 파일의 내용을 나타내고 있다.

 

 

 

 

 

[root@sulinux ~]# cat textfile2
3 three
3 three
4 four
4 four
1 one
1 one
5 five
5 five
2 two
2 two
[root@sulinux ~]#

 

 

 

그리고 다음은 -u옵션으로 유일정렬을 하면서 -r옵션을 사용하여 역순정렬을 한 결과를 나타내고 있다.

 

 

 

 아래 결과와 바로 앞의 예에서 보았던 sort -u textfile2결과를 비교해 보기 바란다.

 

 

 

[root@sulinux ~]# sort -ur textfile2
5 five
4 four
3 three
2 two
1 one
[root@sulinux ~]#

 

 

 

 

위의 결과는 -u옵션으로 유일정렬을 하고 다시 -r옵션으로 내림차순(역순)정렬을 동시에 수행한 것이다.

 

 

 

 

 

다음은 특정파일 정렬시 지정한 열을 기준으로 유일정렬하는 예이다.

 

 

 

 이번에는 지정한 열을 기준으로 정렬한 다음 다시 유일정렬하는 예를 보도록 하겠다.

 

 

 

 아래의 정렬결과를 보기 바란다.

 

 

 

  -k옵션을 사용하여 두번째 필드를 기준으로 정렬한 결과를 나타낸 것이다.

 

 

 

 

 

[root@sulinux ~]# sort -k 2 textfile2
5 five
5 five
4 four
4 four
1 one
1 one
3 three
3 three
2 two
2 two
[root@sulinux ~]#

 

그리고 다음은 두번째 필드를 기준으로 정렬한 다음 유일정렬을 한 예이다.

 

 

 

 

 

[root@sulinux ~]# sort -uk 2 textfile2
5 five
4 four
1 one
3 three
2 two
[root@sulinux ~]#

 

 

 

이렇게 sort명령어는 다양한 방법으로 응용이 가능하며, 특히 위의 예와 같이 텍스트파일의 중복제거를 하면서 특정 필드를 기준으로 오름차순과 내림차순 등으로 정렬하는 것은 리눅스 쉘상태에서 수행할 수 있는 매우 강력한 방법이 될 수 있다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  103 명