2014-11-10 4 views
0

첫 번째 열에서 첫 번째 열과 두 번째 열로 정렬하려는 여러 열이있는 데이터 시트가 있습니다. 엑셀에서는 쉽게 할 수 있지만 awk 나 sed를 사용하면 어떻게 할 수 있습니까?첫 번째 열을 기준으로 정렬하고 두 번째 열을 기준으로 정렬 하시겠습니까?

입력 :가 정렬됨에 따라

2 6 etc etc etc 
2 30 etc etc etc 
39 12 etc etc etc 
77 5 etc etc etc 

전체 행을 따라서 따라야

2 30 etc etc etc 
77 5 etc etc etc 
2 6 etc etc etc 
39 12 etc etc etc 

출력. 미리 감사드립니다.

+1

'sort (1)'을 (를) 사용 할 수 있습니까? 그것은 직설적으로 할 것입니다. "한 쌍의 줄은 다음과 같이 비교됩니다 : 어떤 키 필드라도 지정되면'sort '는 명령 행에 지정된 순서대로 각 필드 쌍을 연관된 순서 옵션에 따라 비교합니다. 차이가 발견되거나 필드가 남아 있지 않습니다. "(http://ss64.com/bash/sort.html) –

+0

대부분의 UNIX 명령은 명확한 이름을 가지고 있습니다. 'join'을 사용하는 파일을 합치려면 파일을 붙여 넣기는'paste'이고, 파일을 찾으려면'find' 등입니다. 그래서 ** sort ** 파일의 명령은 ...-)라고 불립니다. . –

답변

3
$ sort -n -k1,1 -k2,2 file 
2 6 etc etc etc 
2 30 etc etc etc 
39 12 etc etc etc 
77 5 etc etc etc 
+1

약간의 보정 - 'sort -n -k1,1 -k2,2' 여야합니다. '-k'의 시작 필드 만 지정하면 (예 :'-k1') 필드 1에서 시작하여 줄 끝까지 키를 기준으로 정렬 할 수 있습니다. 의미는 미묘하게 보일 수 있지만 결과는 크게 다를 수 있습니다. – twalberg

+0

+1. Ed와 @twalberg,'sort -n -k1,2'와'sort -n -k1,1 -k2,2'를'sort'가 어떻게 해석하는지의 차이점을 설명 할 수 있습니까? – John1024

+0

@ John1024'-k1,2'는 필드 1과 2로 구성된 단일 키를 정렬합니다 (대체 키패드를 사용하지 않는 한 모든 키에는 선행 공백이 포함됩니다). '-k1,1 -k2,2'는 두 개의 키로 정렬합니다 - 먼저 필드 1에서 정렬하고, 항목이 일치하면 필드 2에서 정렬합니다. 일반적으로 많은 차이는 없을 수 있지만 너무 어렵지 않습니다. 반대로 직관적 인 것처럼 보이는 예제를 생각해보십시오. 특히 "앞 공백은 키의 일부"와 관련이 있습니다. – twalberg

관련 문제