Linux/파일·파일 시스템 다루기

[Linux 파일 다루기] 9. $ sort와 $uniq 명령어를 사용해서 파일 정렬 및 중복 내용 제거해서 표시하기

Fletcher 2024. 8. 16. 14:03

 

반갑습니다!

 

이번 포스트에서는

$ sort 명령어를 이용하여 텍스트 파일의 내용을 정렬해보고,

$ uniq 명령어를 이용해서 텍스트 파일의 내용 중

중복을 제거해서 표시해보도록 하겠습니다 ^^

 

 

 

 

 

 

1. 텍스트 파일 내용 정렬하기 : $ sort

 

이번 포스트에서 사용할 샘플 텍스트 파일의 내용입니다

$ cat 명령어를 사용해보니 굉장히 파일 내용이 긴 것을 볼 수 있겠습니다

파일 내용이 그대로 조회되는 것도 좋지만, 일정 기준으로 정렬해서 볼 수는 없을까요?

 

 

 

$ sort 명령어를 사용하면 위와 같이 텍스트 파일의 내용을 정렬할 수 있습니다 ^^

 

 

※ 참고 ※

$ sort 명령어 중 참고할 내용이 한 가지 있는데요

sort 명령어는 인자로 지정한 파일을

각 줄의 모든 필드를 배교할 대상으로 삼아서 정렬한 결과를 표시합니다

 

여기서 필드(field)란, 스페이스나 탭으로 구분한 텍스트 부분을 뜻합니다.

필드 텍스트가 숫자라면 숫자가 작은 순서로,

알파벳이라면 알파벳 순서로 정렬합니다 ^^

 

 

 

$ sort 명령어의 주요 옵션은 다음과 같습니다

 

① -t sep

필드를 구분하는 문자로 sep를 지정합니다

기본 값은 공백 문자와 탭 문자를 사용합니다

 

② -k pos1[,pos2]

정렬 기준 대상 필드를 지정합니다

pos2를 생략하면 지정한 필드 이후가 모두 대상입니다

필드 위치는 1에서 시작합니다

 

③ _b

줄 시작 부분에 있는 공백 문자는 무시합니다

 

④ -r

역순으로 정렬합니다

 

⑤ -f

알파벳 대소문자 차이를 무시합니다

 

 

 

 

 

 

 

2. 텍스트 파일 내용 중 중복 제거하고 표시하기 : $ uniq

 

위와 같은 내용을 가진 텍스트 파일을

$ uniq 명령어를 이용해서 중복된 내용을 제거하고 표시해보겠습니다 ^^

 

 

 

$ uniq 명령어를 사용해서 해당 텍스트 파일의 내용을 조회하니,

중복된 내용이 제거되고 고유한 문자열만 출력 되는 것을 확인할 수 있겠습니다 ^^

 

앞전 $ sort 예시를 적용한 test.txt 파일을 다시 test5.txt로 저장해서 샘플로 사용했는데요

$ uniq 명령어는 텍스트 파일의 내용 중 전후라인만 비교하여 중복을 제거하기 때문에

test.txt 파일의 내용과 같이 특정 패턴이 반복되는 내용은 중복을 제거하지 못합니다 ^^

 

아래의 샘플 이미지를 통해서 확인해보겠습니다

 

 

 

특정 패턴의 내용이 중복되는 test.txt 파일의 내용입니다

우리의 기대대로라면, 해당 파일에 $ uniq 명령어 사용시

특정 패턴의 내용이 한 번만 출력될 것 같지만 보시는 바와 같이

해당 파일의 모든 내용이 그대로 출력되는 것을 확인할 수 있겠습니다

 

$ uniq 명령어는 해당 라인의 전후라인만 비교하여 중복을 제거해서 표시하기 때문입니다 ^^

 

 

 

해당 명령어의 주요 옵션은 다음과 같습니다

 

① -u

중복되지 않은 줄만 출력합니다

 

② -d

중복된 줄만 출력합니다

 

③ -c

중복된 줄 수를 각 줄 옆에 표시합니다

 

④ -f n

각 줄 시작 위치에서 n개의 필드만큼 건너뛰어서 비교합니다

공백 문자와 탭 문자가 필드 구분 문자입니다

필드 위치는 1에서 시작합니다

 

⑤ -s n

각 줄 시작 위치에서 n개 문자를 건너뛰어 비교합니다

 

⑥ -w n

각 줄에서 n개 문자를 비교합니다

기본값은 줄 전체를 비교합니다