Questão Por favor, explique como usar o comando sort no unix


Eu sou novo no UNIX. Por favor explique sort comando. Tenho dúvidas relacionadas ao separador de campo de classificação. Por exemplo.: sort -k2, 2 filename, Por favor, esclareça. Por favor, forneça um pequeno exemplo.


2


origem


Por favor leia man sort Volte quando você tiver uma pergunta explícita sobre o que você não entende. - DavidPostill♦
@David Postill Há um erro de sintaxe no sort -k2, 2 filename Não deve haver um delimitador de espaço no -k2,2 opção. Além disso, eliminaria uma possível fonte de confusão para adicionar uma ordem de dicionário ou uma opção de classificação numérica ao comando para tornar explícito como as coisas deveriam ser classificadas. - karel
Você poderia por favor editar sua pergunta para nos dizer exatamente onde você está confuso? - Ben N
Como escrevi na minha resposta, o comando na pergunta sempre retornará pelo menos uma mensagem de erro e, às vezes, ele retornará outra mensagem de erro depois disso, dependendo do conteúdo do arquivo que está sendo classificado. - karel


Respostas:


Existe um erro de sintaxe sort -k2, 2 filename Não deve haver um delimitador de espaço no -k2,2 opção. Além disso, eliminaria uma possível fonte de confusão e / ou erro (dependendo do conteúdo do arquivo que está sendo classificado) para adicionar uma ordem de dicionário ou uma opção de classificação numérica ao comando para tornar explícito como as coisas deveriam ser ser classificado.

Exemplos

cat unsorted-file.txt # original unsorted file
9 8 7
6 55 44
3 2 1

sort -k1 -n unsorted-file.txt # example 1
3 2 1
6 55 44
9 8 7

sort -k3 -n unsorted-file.txt # example 2
3 2 1
9 8 7
6 55 44

sort -k1,3 -n unsorted-file.txt # example 3
3 2 1
6 55 44
9 8 7

sort -k2,3 -n unsorted-file.txt # example 4
3 2 1
9 8 7
6 55 44

Explicação

Por padrão, o delimitador de campo não está em branco para a transição em branco.
KEYDEF -k F [.C] [OPTS] [, F [.C] [OPTS]] para a posição inicial e final, onde F é um número de campo e C uma posição de caractere no campo. Ambos são de origem 1 e a posição de parada é padronizada para o final da linha.
-k1 - primeiro campo
-k3 - terceiro campo
-k1,3 - inicie o primeiro campo, pare o terceiro campo
-k2,3 - inicie o segundo campo, pare o terceiro campo
-n - compare de acordo com o valor numérico da string


2



-n é obrigatório comparar o número, senão, como uma string, 10 é menor que 2. - Archemar