Ignorar chaves em branco no tipo coreutils

3

Como você ignora ou há uma maneira de alterar a ordem de classificação das chaves vazias ao usar a opção -k?

# cat afile
a  b
11 20
93 45
55
26
09 31

Como posso classificar os valores vazios da coluna b na parte inferior para que fique assim:

a  b
11 20
09 31
93 45
26
55

Aqui está o que eu recebo:

sort -k 2b tmp/file
26
55
11 20
09 31
93 45
    
por frogstarr78 04.08.2013 / 15:48

2 respostas

4

Você pode adicionar uma chave de classificação especial para campos vazios e removê-la novamente após a classificação. Essa chave não deve estar presente em seus dados de entrada e deve ser maior que todos os valores (numéricos).

Por exemplo:

$ awk '$2 ~ /^$/ { print $1, "XXX"; next; } {print $0 }' f \
    | sort -k2b
    | sed 's/XXX$//'
11 20
09 31
93 45
26 
55
    
por 04.08.2013 / 15:59
3

Outra abordagem:

awk '{print NF, $0}' | sort -k1,1rn -k3 | cut -d' ' -f2-

Isso é adicionar outra coluna com o número de campos e classificar primeiro pelo número inverso de campos.

    
por 04.08.2013 / 19:11