classificar com base na coluna

2
10 awhdk;
14 hjoeow;
2  kdkld;
4  jkjdksl

Como classificar isso com base na coluna um (ou seja, a contagem)?

Eu gostaria de obter esta saída:

14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld

Preciso que as duas colunas sejam impressas com base na classificação da primeira coluna.

    
por arun 25.06.2014 / 13:26

1 resposta

4

Você pode usar -k para especificar onde na linha de entrada a chave de classificação começa e termina.

Você usa a opção -n ou adiciona n à especificação de chave de classificação para acionar uma classificação numérica em oposição a uma classificação lexical por padrão. E -r para inverter o tipo.

Aqui, para uma classificação numérica, não é necessário limitar a chave de classificação ao comando sort. Se você fizer:

sort -rn file

Ele tratará toda a linha como um número. A linha 14 hjoeow; , por exemplo, será entendida como o número 14 .

Você pode fazer:

sort -bk 1,1rn file

Para classificar apenas no primeiro campo, mas isso não faria diferença.

O comando para juntar linhas é paste com a opção -s . Você pode especificar o delimitador com -d . paste é um valor especial para o delimitador que significa unir-se com nada entre . Então, para obter o resultado esperado:

sort -rn file | paste -sd '
sort -rn file
' -

POSIX - requer que um nome de arquivo seja passado. paste é novamente um valor especial que significa entrada padrão . Você pode omiti-lo com algumas implementações %code% .

    
por 25.06.2014 / 13:34

Tags