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-
즉, 필드 수를 포함하는 다른 열을 추가하고 먼저 반대 수의 필드를 기준으로 정렬합니다.