본문 바로가기
IT/LINUX

리눅스 SORT 명령어 정렬하기

by SidePower 2020. 8. 30.

가끔씩 업무를 하다보면 많은 양의 데이타를 특정 필드나 값을 
기준으로 정렬해서 제출해야 되는 일이 생기조.^^;;

오라클 DB 테이블이면 쿼리문에 order by 로 간단하게 정렬 하면 되고요.
리눅스 서버 환경에서는 sort 명령어로 정렬이 가능합니다.

시작합니다.

기본 사용법

sort 파일 또는 cat 파일|sort
첫번째 문자부터 오름차순으로 정렬
만약에 문자가 동일하면 다음 문자를 기준으로 오름차순 정렬합니다.

옵션 사용법

-r : 내림차순으로 정렬
sort -r 파일
다른 옵션들과 함께 -r 옵션을 사용하면 무조건 내림차순으로 정렬됩니다.

-n : 문자를 숫자형으로 인식해서 정렬
sort -n 파일
만약에 숫자가 아닌 문자가 있을경우에는
숫자까지만을 숫자형으로 인식하고 뒤로는 문자의 내림차순으로 정렬됩니다.

-k : 정렬기준을 단어(필드)로 지정
sort -k 2 파일
2번째 필드 문자를 기준으로 정렬
sort -k 1,2 파일
1번째 필드 문자 기준으로 정렬하고
동일한 문자면 2번째 필드 문자를 기준으로 연속적으로 정렬합니다.

여기서 주의해야 될게 있습니다 !!!

여러개 필드를 지정해서 정렬할때 연속적인 번호만 된다는 거에요.^^;

-k 1,3 은 안됩니다. 
-k 2,5 도 안됩니다.
-k 4,2 역시 안됩니다.
-k 2,3 과 -k 1,2 와 -k 4,5 이렇게 숫자가 연속적일때만 됩니다.

그렇지만 방법은 있어요.ㅋ

-k 옵션에 필드 번호를 따로따로 다 적어주면 됩니다.

sort -k 1,1 -k 3,3 파일

이렇게요. 순차적으로 1번 필드 정렬 먼저하고 동일하면 3번 필드 정렬하게 됩니다.

(참고)

1,1 은 1번 필드에서 1번 필드까지 정렬기준으로 하겠다는 의미인데요.

이런 표기법으로 적어야 적용이 된다는점 주의하세요.

-k 옵션은 내용이 좀 길지만 꼭 익혀두세요. 

실업무에 유용하게 자주 사용하게 되더라구요.ㅋ

-t : 필드 구분자 지정
주로 -k 옵션과 함께 쓰입니다. 

리눅스 기본 필드구분자는 공백,탭으로 지정되어 있습니다. 

다른 문자로 할 필드구분자를 할 경우에 사용하는 옵션입니다.

sort -t "#" -k 3 파일

필드구분자를 #로 지정해서 3번째 필드문자를 정렬기준으로 내림차순으로 정렬합니다.

-u : 중복된 문자열 제거
sort -u 파일

내림차순으로 정렬하면서 동일한 문자열이면 하나만 표시합니다.

다른 옵션들도 몇개 더 있는데요. 거의 사용하지 않더라구요.

여기까지입니다.

갑자기 슬퍼지네요. 친구가 카톡으로 랍스터 먹는다고 자랑을 합니다. ^^;;

 

반응형

댓글