오늘 포스팅에서는 Linux sort 명령어의 사용 방법에 대해 알아보려 합니다.
아래 포스팅에서 텍스트 파일의 내용을 unique 하게 sorting 하는 방법에 대해 설명 드린적이 있는데~
아래 포스팅 에서는 Gow의 uniq 명령과 윈도우의 sort명령을 사용했었습니다.
2014/05/14 - [컴퓨터일반] - windows console 에서 텍스트 파일 내용 unique 하게 정렬하기
하지만 Linux 의 sort 명령어에는 굉장히 편리하게도 unique 옵션이 있더군요.
간단한 예로 다음과 같은 테스트 쿼리를 예로 들어보죠~
아래 insert 구문은 아래 포스팅에서 소개 드렸던 generateda를 사용하여 만들어진 테스트 데이터 입니다.
2014/06/17 - [유틸] - Database 테스트 데이터 생성 사이트 generatedata
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Ahmed","1-156-444-1052",5);
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Nissim","1-786-558-9774",2);
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Herman","1-831-439-1058",4);
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Nissim","1-144-592-7170",1);
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Gannon","1-863-622-1551",4);
INSERT INTO myTable (NAME,PHONE,NUMBER) VALUES ("Samuel","1-963-369-2263",5);
generateda에서 랜덤하게 만들어진 데이터 이므로 중복이 있을수도 있겠죠~ 위에 예로 든 데이터에서는 Nissim 이라는 이름이 중복입니다.
위 예처럼 몇 줄 안 되는 경우에는 일일이 확인해서 중복되는 데이터들을 지워 줄 수 있겠지만,중복되는 경우가 많다면 일일이 사람이 지워주기는 힘들겠죠~
Linux 의 sort 명령어를 몰랐다면 Excel 과 같은 프로그램등을 이용해서 정렬해서 중복되는 데이터들을 제거 했겠지만 대단히 불편했을 것 같네요~
Sort 명령어의 몇 가지 옵션에 대해 알아보겠습니다. 저는 현재 windows 환경이라 Cygwin 에서 linux sort 함수를 사용하도록 하겠습니다.
-u : unique 옵션
-t : 뒤에 구분자를 넣어 줌
-k : 뒤에 몇 번째 열을 기준으로 sort 할 것인지를 넣어줌, 쉼표로 구분하여 시작열, 끝열을 넣어줌, 시작열만 지정할 경우 시작열부터 줄의 끝까지임
위 옵션을 바탕으로 위에서 소개한 쿼리 예에 대해 이름에 따른 정렬을 시켜 보죠~ 위 쿼리는 query.txt 파일에 적혀 있습니다.
위 쿼리 문자열을 보면 쌍따옴표(") 를 기준으로 2번째 열이 바로 이름 컬럼이라는 것을 알 수있습니다. 따라서 구분자로는 –t 옵션에 쌍따옴표를 넣어주고~ –k 옵션에는 2를 넣어 줍니다. 하지만 그냥 2를 넣어주면 2 부터~ 끝까지 이기 때문에~ 정상적으로 unique 하게 sort 가 안됩니다. 딱 2번째 컬럼 즉 이름 부분만 선택하기 위해 2,2 라고 넣어줘야 합니다.
sort –u –k 2,2 –t '"' query.txt > uniq.txt
위 명령을 실행해 보겠습니다. 다음과 같이 중복된 이름이었던 4번째 행이 사라진 것을 확인 할 수 있습니다.
'Linux' 카테고리의 다른 글
리눅스 로그 색깔을 입혀 주는 ccze tool (0) | 2015.10.13 |
---|---|
Bash Shell 에서 commacd 을 사용하여 디렉터리 이동을 간편하게 해 보자~ (0) | 2015.04.19 |
SSH 와 한글 Putty (0) | 2015.03.29 |
우분투 14.04 에 iptime2000ua 무선 랜 드라이버 설치하기 (5) | 2014.08.28 |
Bash Shell 단축키 (0) | 2014.04.05 |
우분투 apt-get 설치 프로그램들 (0) | 2014.04.03 |
Linux Mint 에서 아르마딜로(Armadillo C++ linear algebra) 라이브러리 사용하기 (0) | 2013.11.22 |
우분투 대시 최근 재생 목록 지우기 (0) | 2012.11.27 |
댓글