여러 열이 쉼표로 구분되어 있고 한 열에 mm/dd/yyyy 형식의 날짜가 있는 다음과 같은 방식으로 파일을 정렬하려고 합니다.
$cat 파일 이름
AN1143,45.7,03/05/2012,
H9477,45.3,01/15/2010,
DN1222,45.1,03/05/1800,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,
H12421,27.7,06/21/2000
내 의도는 첫 번째 열을 기준으로 먼저 정렬한 다음 날짜가 있는 세 번째 열을 기준으로 정렬하는 것입니다. 다음 명령을 시도했습니다.
sort -t"," -k1,1 -k3,9n.3,10n -k3,1n.3,2n -k3,4n.3,5n filename
하지만 이 오류가 발생합니다. 설명에 대한 도움을 주시면 감사하겠습니다.
정렬: 필드 사양의 잘못된 문자: 잘못된 필드 사양 '3,9n.3,10n'
답변1
이 시도:
sort -t, -k1,1 -k3.7n -k3.1,3.2n -k3.4,3.5n < filename
- 쉼표 구분 기호를 인용할 필요가 없습니다.
- 첫 번째 정렬 키 정의는 열 1을 사용합니다.
- 두 번째 정렬 키 정의는 열 3의 연도 필드를 사용하여 숫자로 정렬합니다.
- 세 번째 정렬 키는 3열의 월 필드를 사용하여 숫자로 정렬합니다.
- 네 번째 정렬 키는 3열의 "일" 필드를 사용하여 숫자로 정렬합니다.
향상된 샘플 데이터 파일을 사용하여 예제를 실행하면 정렬이 표시됩니다.
입력하다:
AN1143,45.7,03/05/2012,
AN1143,45.7,02/05/2012,
AN1143,45.7,03/04/2012,
AN1143,45.7,03/05/2011,
H9477,45.3,01/15/2010,
DN1222,45.1,03/05/1800,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,
H12421,27.7,06/21/2000
산출:
AN1143,45.7,03/05/2011,
AN1143,45.7,02/05/2012,
AN1143,45.7,03/04/2012,
AN1143,45.7,03/05/2012,
DN1222,45.1,03/05/1800,
H12421,27.7,06/21/2000
H9477,45.3,01/15/2010,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,