![coreutils는 정렬 시 빈 키를 무시합니다.](https://linux55.com/image/49209/coreutils%EB%8A%94%20%EC%A0%95%EB%A0%AC%20%EC%8B%9C%20%EB%B9%88%20%ED%82%A4%EB%A5%BC%20%EB%AC%B4%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
sort -k를 사용할 때 null 키의 정렬 순서를 어떻게 무시하거나 변경할 수 있습니까?
# cat afile
a b
11 20
93 45
55
26
09 31
아래쪽 빈 열 b 값을 다음과 같이 정렬하려면 어떻게 해야 합니까?
a b
11 20
09 31
93 45
26
55
이것이 내가 얻는 것입니다:
sort -k 2b tmp/file
26
55
11 20
09 31
93 45
답변1
빈 필드에 특수 정렬 키를 추가하고 정렬 후 다시 제거할 수 있습니다. 키는 입력 데이터에 표시되어서는 안 되며 각 (숫자) 값보다 커야 합니다.
예를 들어:
$ awk '$2 ~ /^$/ { print $1, "XXX"; next; } {print $0 }' f \
| sort -k2b
| sed 's/XXX$//'
11 20
09 31
93 45
26
55
답변2
또 다른 방법:
awk '{print NF, $0}' | sort -k1,1rn -k3 | cut -d' ' -f2-
즉, 필드 수를 포함하는 다른 열을 추가하고 먼저 반대 수의 필드를 기준으로 정렬합니다.