sort
100%

Text-Fu · Lição 12

sort

Aprenda a ordenar linhas de texto por valores lexicais, numéricos ou de campos selecionados com sort.

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.

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:

  1. 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.
  2. 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 -t e -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
Próxima Lição
Voltar para Text-Fu