![필드 1, 필드 2를 기준으로 정렬하지만 필드 1 정렬을 유지하고 두 번째 정렬에서는 null/공백을 무시합니다.](https://linux55.com/image/5823/%ED%95%84%EB%93%9C%201%2C%20%ED%95%84%EB%93%9C%202%EB%A5%BC%20%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C%20%EC%A0%95%EB%A0%AC%ED%95%98%EC%A7%80%EB%A7%8C%20%ED%95%84%EB%93%9C%201%20%EC%A0%95%EB%A0%AC%EC%9D%84%20%EC%9C%A0%EC%A7%80%ED%95%98%EA%B3%A0%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%EC%A0%95%EB%A0%AC%EC%97%90%EC%84%9C%EB%8A%94%20null%2F%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EB%AC%B4%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
1열 기준으로 정렬 후 입력
-bash-3.2$ sort -t'|' -k1 -k2 clm.srt
"1033CLMS0400000000000"||""|"0000000558 "| |1
"2020000005438WC011631"||""|" 200606202"| |2
"2020000005438WC011632"|10|"N"|"20060626N00000200000"|10 |3
"2020000005438WC011632"|11|"N"|"20060626N00000200000"|11 |4
"2020000005438WC011632"|12|"N"|"20060626N00000200000"|12 |5
"2020000005438WC011632"|1|"N"|"20060620N000020000000"|1 |13
"2020000005438WC011632"|47|"N"|"20060626N00000000000"|47 |43
"2020000005438WC011632"|5|"N"|"20060626N000000000000"|5 |45
"2020000005438WC011632"|6|"N"|"20060626N0002N0200000"|6 |46
"2020000005438WC011632"|7|"N"|"20060626N000002N00000"|7 |47
"2020000005438WC011632"|8|"N"|"20060626N000000200000"|8 |48
"2020000005438WC011632"|9|"N"|"20060626N0000N0200000"|9 |49
"2020000005438WC011633"||""|"20060605000 "| |50
"2020000005438WC011634"||""|"001033720061 "| |51
"2020000005438WC011635"||""|"0020060626N+00014000000"| |52
두 번째 필드에 숫자 정렬을 강제로 적용하면 공백 값이 맨 위로 밀려 첫 번째 필드 정렬을 방해하게 됩니다.
-bash-3.2$ sort -t'|' -k1 -n -k2 clm.srt
"1033CLMS0400000000000"||""|"0000000558 "| |1
"2020000005438WC011631"||""|" 200606202"| |2
"2020000005438WC011633"||""|"20060605000 "| |50
"2020000005438WC011634"||""|"001033720061 "| |51
"2020000005438WC011635"||""|"0020060626N+00014000000"| |52
"2020000005438WC011632"|1|"N"|"20060620N000020000000"|1 |13
"2020000005438WC011632"|5|"N"|"20060626N000000000000"|5 |45
"2020000005438WC011632"|6|"N"|"20060626N0002N0200000"|6 |46
"2020000005438WC011632"|7|"N"|"20060626N000002N00000"|7 |47
"2020000005438WC011632"|8|"N"|"20060626N000000200000"|8 |48
"2020000005438WC011632"|9|"N"|"20060626N0000N0200000"|9 |49
"2020000005438WC011632"|10|"N"|"20060626N00000200000"|10 |3
"2020000005438WC011632"|11|"N"|"20060626N00000200000"|11 |4
"2020000005438WC011632"|12|"N"|"20060626N00000200000"|12 |5
"2020000005438WC011632"|47|"N"|"20060626N00000000000"|47 |43
이상적으로 나는 이것을 달성하려고 노력하고 있습니다.
"1033CLMS0400000000000"||""|"0000000558 "| |1
"2020000005438WC011631"||""|" 200606202"| |2
"2020000005438WC011632"|1|"N"|"20060620N000020000000"|1 |13
"2020000005438WC011632"|5|"N"|"20060626N000000000000"|5 |45
"2020000005438WC011632"|6|"N"|"20060626N0002N0200000"|6 |46
"2020000005438WC011632"|7|"N"|"20060626N000002N00000"|7 |47
"2020000005438WC011632"|8|"N"|"20060626N000000200000"|8 |48
"2020000005438WC011632"|9|"N"|"20060626N0000N0200000"|9 |49
"2020000005438WC011632"|10|"N"|"20060626N00000200000"|10 |3
"2020000005438WC011632"|11|"N"|"20060626N00000200000"|11 |4
"2020000005438WC011632"|12|"N"|"20060626N00000200000"|12 |5
"2020000005438WC011632"|47|"N"|"20060626N00000000000"|47 |43
"2020000005438WC011633"||""|"20060605000 "| |50
"2020000005438WC011634"||""|"001033720061 "| |51
"2020000005438WC011635"||""|"0020060626N+00014000000"| |52
답변1
정렬 키가 끝나는 위치를 지정해야 합니다. 그렇지 않으면 줄 끝에서 끝납니다.
하나의 키에만 숫자 정렬을 적용하려면 n
이를 키 사양에 추가하세요. -n
Alone은 전역적으로 숫자 정렬을 켭니다.
sort -t'|' -k1,1 -k2,2n