나는 내가 가지고 있는 일부 데이터를 사용하여 특정 열을 정렬하려고 했습니다.
ID Name Last Grade
123 Bill Holy A
747 Chloe Crown B
757 Aaron Farmer D
365 Gray Billson
다른 모든 데이터는 그대로 유지하면서 첫 번째 열(ID)을 숫자순으로 정렬하고 두 번째 열(이름)을 알파벳순으로 열별로 정렬하려고 합니다. 완전한 명령으로 이 작업을 수행하고 싶습니다. 지금까지 시도한 것은
sort -k1,1 -k2,2 [filename]
첫 번째 열을 숫자순으로 정렬하는 것뿐인데 두 번째 열(이름)은 변경되거나 정렬되지 않는 것 같습니다. 마지막으로 이 명령을 실행하면 헤더(아이디, 이름, 성, 학년) 맨 아래로 이동합니다.
답변1
예제에는 고유한 필드 1 값(ID 번호)이 포함되어 있으므로 데이터가 ID별로 정렬되면 이름별 정렬이 작동하지 않습니다.
정렬기는 헤더 줄을 찾지 않고 전체 파일을 정렬합니다.
다음 Awk 프로그램은 헤더 행을 인쇄하고 정렬을 위해 모든 후속 행을 보냅니다.
awk '{if (NR==1) {print $0} {print $0 | "sort -k1,1 -k2,2"}}' <filename>
답변2
Gnu sed 및 정렬 사용:
sed -z 'h;s/\n.*//;x;s/[^\n]*\n//;s/.*/echo "&"|sort -k1,1 -k2,2/e;x;G' infile