2012-08-13 4 views
12

";"로 구분 된 필드가있는 CSV 파일이 있습니다. 8 개의 필드가 있으며 첫 번째 4 개 열로 데이터를 정렬하려고합니다 (첫 번째 열은 1 번째 열, 다음은 2 번째 열 등)Bash : 첫 번째 4 열로 csv 파일 정렬

어떻게하면 Linux의 명령 줄에서이 작업을 수행 할 수 있습니까?

오픈 오피스를 사용해 보았지만 열을 3 개만 선택할 수있었습니다.

편집 : 내 데이터를 정렬하려는 입력란 중 세 개의 입력란에는 숫자 값이 포함 된 문자열 하나가 포함됩니다. sort 명령으로이를 어떻게 지정할 수 있습니까?

답변

20

시도 :

sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt 

예 :

1;2;100;4 
1;2;3;4 
10;1;2;3 
9;1;2;3 

> sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n temp3 
1;2;3;4 
1;2;100;4 
9;1;2;3 
10;1;2;3 
+0

고맙습니다. '1,1n'의 의미는 무엇입니까? –

+0

숫자로 정렬하기 – Vijay

+0

오케이. 그래서, 필드 3에는 문자열이 들어 있다고 말하면'-k 3,3d'를 사전 순서에 따라 정렬 할 것입니다, 맞습니까? –

8

sort -k을 사용하면 정렬 키를 정의 할 수 있습니다. man sort에서 : 그래서

-k, --key=POS1[,POS2] 
     start a key at POS1 (origin 1), end it at POS2 (default end of line). 

$ sort -t\; -k1,4 

을해야한다. 세미콜론 (;)을 이스케이프 처리했음을 주목하십시오. 그렇지 않으면 쉘은 명령문의 끝으로 해석합니다.

+0

감사합니다. 'sort '는 또한 숫자로나 알파벳순으로 정렬 할 것인지를 각 필드에 지정할 수 있습니까? (내 마지막 편집 참조) –

관련 문제