오늘 포스팅에서는 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번째 행이 사라진 것을 확인 할 수 있습니다.

 

데이터 베이스를 사용하다 보면 정상적으로 동작하는지 테스트를 하는 과정이 필요한데요~

 

테스트를 하기 위해서는 테스트 데이터를 insert 해야 할 텐데~

 

각 필드에 맞게 랜덤하게 데이터를 생성하는 것도 참 귀찮은 일입니다.

 

그래서 데이터베이스의 테스트 데이터를 생성하는 방법에 대해 검색 해 보니 아래 주소의 사이트가 나오더군요.

 

http://www.generatedata.com/

 

위 사이트에서 데이터 생성을 할 수 있지만 100 개 정도의 데이터만 생성 할 수 있는 등 제약 사항 들이 좀 있더군요.

 

하지만 http://www.generatedata.com/ 은 소스코드를 다운로드 받아서 자신의 서버에 설치하면 제약 없이 사용 할 수 있다는 군요. 서버 설치 방법은 아래 주소에 설명 되어 있습니다.

 

http://benkeen.github.io/generatedata/install.html

 

저는 어차피 그리 많은 데이터는 필요 없어서 간단하게 http://www.generatedata.com/ 을 그냥 사용하는데요~

 

아래 그림과 같이~ 각 column 의 이름과 타입을 정해 주고~ 기본적으로 4개의 column 을 설정 할 수 있는데~ 추가를 할거면 아래 그림에서와 같이 Add 를 눌러서 추가 하시면 됩니다.

 

SQL 뿐만 아니라 Excel, CSV, JSON, XML, HTML 형태로도 생성이 가능하더군요.

 

SQLite, MySQL, Oracle, Postgres 에 대해 테스트 데이터를 생성할 수 있고 설정을 다 마쳤으면~ 우측 하단의 generate 버튼을 누르면 됩니다.

 

위 화면의 설정에 따라 SQL 파일로도 떨궈주고~ 또는 새로운 페이지에서 아래 그림과 같이 INSERT 쿼리를 생성되게도 할 수 있더군요.



+ Recent posts