
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 ambas as colunas sejam impressas com base na classificação da primeira coluna.
Responder1
Você pode usar -k
para especificar onde na linha de entrada a chave de classificação começa e termina.
Você usa a -n
opção ou adiciona n
à especificação da chave de classificação para acionar uma classificação numérica em vez de uma classificação lexical por padrão. E -r
para reverter a classificação.
Aqui, para uma classificação numérica, você não precisa limitar a chave de classificação ao comando de classificação. Se você fizer:
sort -rn file
Ele tratará a linha inteira como um número. A 14 hjoeow;
linha, por exemplo, será entendida como o 14
número.
Você poderia fazer:
sort -bk 1,1rn file
Classificar apenas no primeiro campo, mas isso não faria diferença.
O comando para juntar linhas está paste
com a -s
opção. Você pode especificar o delimitador com -d
. \0
é um valor especial para o delimitador que significajunte-se sem nada no meio. Então, para obter o resultado esperado:
sort -rn file | paste -sd '\0' -
POSIX paste
exige que um nome de arquivo seja passado. -
é novamente um valor especial que significaentrada padrão. Você pode omiti-lo com algumas paste
implementações.