Linux Command

[Linux] 파일내용 정렬(sort)

wookjae 2021. 10. 1. 00:41

sort ? 

파일내용 또는 목록을 행 단위(Row) 기준으로 정렬하여 출력하는 명령어.

 

 

[ 자주사용되는 옵션 ]
-k Num    : 정해진 컬럼위치(Num) 기준으로 정렬 (-t 옵션 함께사용)
-t '구분자' : 필드 구분자(Seperator) 지정, 기본 값은 공백문자 

-f            : 무시케이스 (대,소문자 구분X) 

-g           : 일반적인 숫자기준 정렬

-n           : 라인의 각 필드를 비교하는 대상을 (숫자)로 한정

-r           : 역순정렬

-u           : 내용이 같은 중복 행 제거 

 


[ 입력 및 실습 ]

 

 

1. /etc/passwd 파일 기본출력

$ cat /etc/passwd                

 

 

2. /etc/passwd 파일 출력후 정렬(1)

$ cat /etc/passwd | sort 

--> cat으로 출력된 passwd파일 내용을 파이프 '|'로 입력받아 sort(정렬) 처리..

--> 각 행의 맨 앞 필드(Char) 기준으로 문자오름차순(a, b, c ...) 정렬

 

 

2. /etc/passwd 파일 출력후 정렬(2)

$ cat /etc/passwd | sort -t: -k 3

(Option -t'구분자' --> 구분자를 기준으로 필드 값을 나눈다, -k '기준' --> 위치'기준'으로 정렬)

--> passwd파일의 각 행의 구분자(":") 를 기준으로 3번째 위치. '0', '1000', '11', '1', '12', '14', '192', '2', '3'..

기준으로 오름차순 정렬 ( 숫자가 아닌 문자로 인식 )

 

 

3. /etc/passwd 파일 출력후 정렬(3)

$ cat /etc/passwd | sort -t: -k 3 -n

(Option -n : 지정된 구분 값을 숫자로 인식 )

--> passwd파일의 각 행의 구분자(":") 를 기준으로 3번째 위치값을 기준으로 숫자로 인식하여

오름차순 정렬 ( 0, 1, 2, 3... )

 

 

4. /etc/passwd 파일 출력후 정렬, 디버그 (3) 

$ cat /etc/passwd | sort -t: -k 3 -n --debug

--> 디버그 모드로 사용하여 정렬기준을 정확하게 확인.

 

 

5. /etc/passwd 파일 출력후 정렬 (4)

$ cat /etc/passwd | sort -t: -k 5,5 --debug

( -k '정렬 시작위치 컬럼', '정렬 종료위치 컬럼' ) : 5번째 컬럼 위치 '문자' 기준 오름차순 정렬

 

 

6. /etc/passwd 파일 출력후 정렬 (5)

$ cat /etc/passwd | sort -t: -k 5,5 -k 1,1 --debug

--> 5번째 컬럼 위치 '문자' 기준 오름차순 정렬이후, 1번째 컬럼위치 '문자' 기준 오름차순 정렬

 

 

7. 파일목록 정렬 (파일 사이즈 기준 오름차순)

$ ls -al | sort -k 5 -n 

--> 현재 경로의 파일목록을 5째 위치(파일용량) '숫자' 기준으로 오름차순 정렬

(스페이스로 필드 값이 구분되어 있으므로 -t '구분자' 지정 생략.. )

 

 

exit.