O comando sort lê linhas completas, ordena-as de acordo com as regras de comparação selecionadas e grava o resultado em stdout. Ele não altera o arquivo de entrada, a menos que você escolha explicitamente uma operação de saída.
Text-Fu · Lição 12
sort
Aprenda a ordenar linhas de texto por valores lexicais, numéricos ou de campos selecionados com sort.
Ordenação de Linhas Completas
Considere animals.txt:
dog
cow
cat
elephant
bird
Ordene as linhas em ordem crescente:
$ sort animals.txt
bird
cat
cow
dog
elephant
A ordenação do texto segue o locale atual, que pode afetar maiúsculas, acentos e pontuação. Use um locale consistente, como LC_ALL=C, quando um script exigir uma comparação reproduzível orientada por bytes:
$ LC_ALL=C sort animals.txt
O que sort animals.txt faz sem uma opção de chave ou comparação numérica?
Inversão do Resultado
Acrescente -r para inverter o resultado da comparação:
$ sort -r animals.txt
elephant
dog
cow
cat
bird
Qual comando ordena animals.txt em ordem inversa?
Comparação de Números
A ordem lexical compara caracteres; por isso, 10 normalmente vem antes de 2. Use -n para uma comparação numérica comum:
$ printf '10\n2\n30\n' | sort -n
2
10
30
Combine opções quando necessário. sort -nr scores.txt compara numericamente e coloca os valores maiores primeiro.
Qual comando ordena as linhas numéricas de scores.txt da maior para a menor?
Ordenação por um Campo
Use -k START[,END] para escolher uma chave. Por padrão, os campos são separados por sequências de espaços. Para registros separados por dois-pontos, use -t ':':
$ printf 'alice:30\nbob:8\ncarol:20\n' | sort -t ':' -k 2,2n
bob:8
carol:20
alice:30
Aqui, -t ':' seleciona o delimitador, -k 2,2 limita a chave ao campo 2 e o n anexado compara essa chave numericamente. Sem o ,2 final, uma chave iniciada no campo 2 normalmente continua até o fim da linha.
Qual comando ordena users.txt numericamente apenas por seu segundo campo separado por dois-pontos?
Remoção de Duplicatas e Salvamento da Saída
Use -u para mostrar uma linha para cada chave de comparação igual:
$ sort -u names.txt
Isso ordena e remove duplicatas segundo as regras selecionadas. Se quiser apenas remover duplicatas adjacentes de dados já ordenados, o comando uniq, abordado mais adiante, pode fazer isso.
Para gravar o resultado em um arquivo, o redirecionamento comum é adequado quando o destino é diferente da entrada:
$ sort names.txt > names-sorted.txt
Não execute sort names.txt > names.txt; o shell trunca a entrada antes que sort a leia. O GNU sort -o names.txt names.txt organiza sua própria saída com segurança quando você pretende usar o mesmo caminho:
$ sort -o names.txt names.txt
Mantenha um backup ou grave e verifique um resultado separado quando os dados originais forem importantes.
No GNU/Linux, qual comando solicita que sort grave com segurança o resultado ordenado de volta em names.txt, sem que o redirecionamento do shell o trunque primeiro?
Para praticar a ordenação e a análise de dados orientados por linhas, experimente estes laboratórios:
- Comando sort do Linux: Ordenação de Texto — Este laboratório oferece uma introdução direta ao comando
sort, permitindo que você pratique a ordenação de linhas de arquivos de texto de várias formas, inclusive em ordem crescente e decrescente. - Contagem e Ordenação de Palavras — Aplique a ordenação junto com a contagem de palavras para analisar dados, encontrar padrões frequentes e organizar resultados.
Lição concluída
Você concluiu sort
Agora você sabe escolher regras de comparação e destinos para textos ordenados.
Ordene linhas completas sob um locale explícito quando a reprodução for importante.
Inverta os resultados com
-r.Compare valores numéricos com
-n.Selecione uma chave de campo limitada com
-te-k.Remova duplicatas ou salve a saída sem truncar a entrada.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita