Comando sort do Linux: Ordenação de Texto

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará o versátil comando sort no Linux, um utilitário poderoso para organizar e arranjar dados de texto. Como administrador escolar, você utilizará várias opções do comando sort para gerenciar e analisar informações de alunos de maneira eficiente. Esta experiência prática ajudará você a entender como manipular dados em cenários do mundo real usando ferramentas de linha de comando do Linux.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudar você a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 98%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Ordenação Básica de Nomes de Alunos

Vamos começar ordenando uma lista de nomes de alunos em ordem alfabética. Esta é uma tarefa comum ao criar listas de chamada ou organizar registros estudantis.

Primeiro, vamos visualizar o conteúdo da nossa lista de alunos:

cat ~/project/students.txt

Você deverá ver uma lista de nomes de alunos sem uma ordem específica, semelhante a esta:

David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson

Agora, vamos usar o comando sort para organizar esses nomes em ordem alfabética:

sort ~/project/students.txt

Este comando exibirá a lista ordenada dos nomes dos alunos na sua tela. A saída deve ser parecida com esta:

Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson

O comando sort, por padrão, ordena as linhas alfabeticamente. Ele compara as linhas caractere por caractere, começando do início de cada linha. É por isso que "Alice" vem antes de "Bob", e assim por diante.

Se você não vir nenhuma saída, não se preocupe! O comando funcionou, mas apenas exibiu o resultado no terminal. Se você quiser salvar a lista ordenada em um novo arquivo, pode usar o operador de redirecionamento de saída > desta forma: sort ~/project/students.txt > ~/project/sorted_students.txt

Ordenando Alunos por Idade

Em seguida, vamos ordenar os alunos por suas idades. Isso pode ser útil ao organizar estudantes em grupos ou atividades adequadas para cada faixa etária.

Primeiro, vamos observar nossos dados:

cat ~/project/student_ages.txt

Você verá uma lista de alunos com suas respectivas idades, assim:

David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18

Para ordenar esta lista por idade, usaremos a opção -n, que instrui o sort a tratar os números como valores numéricos em vez de strings:

sort -n -t: -k2 ~/project/student_ages.txt

Vamos detalhar este comando:

  • -n: Esta opção diz ao sort para realizar uma ordenação numérica.
  • -t:: Especifica que os campos são separados por dois-pontos.
  • -k2: Indica ao sort para usar o segundo campo (a idade) como a chave de ordenação.

Isso exibirá a lista de alunos ordenada do mais novo para o mais velho:

Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21

Sem a opção -n, o sort trataria as idades como strings, o que poderia levar a uma ordem incorreta (como 18, 19, 20, 21, 3). A opção -n garante a ordenação numérica correta.

Ordenação Reversa de Notas de Alunos

Agora, vamos ordenar as notas dos alunos em ordem decrescente. Isso é frequentemente usado para classificar alunos ou identificar os melhores desempenhos.

Primeiro, visualize a lista atual:

cat ~/project/student_grades.txt

Você deve ver algo assim:

David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91

Para ordenar as notas da maior para a menor, usaremos a opção -r para ordem reversa, junto com -n para ordenação numérica:

sort -nr -t: -k2 ~/project/student_grades.txt

Aqui está o que cada parte do comando faz:

  • -n: Realiza uma ordenação numérica.
  • -r: Inverte a ordem de classificação (decrescente em vez de crescente).
  • -t:: Especifica que os campos são separados por dois-pontos.
  • -k2: Usa o segundo campo (a nota) como chave de ordenação.

Este comando exibirá as notas dos alunos da maior para a menor:

Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87

A opção -r é particularmente útil quando você deseja ver os valores mais altos primeiro, o que é comum em muitos cenários reais, como rankings, identificação de destaques ou priorização de tarefas.

Ordenando Registros de Alunos por Múltiplos Campos

Nesta etapa, vamos ordenar um registro de aluno mais complexo que inclui nome, idade e nota. Este é um cenário comum ao lidar com bancos de dados estudantis abrangentes.

Primeiro, vamos olhar nossos dados:

cat ~/project/student_records.txt

Você verá que cada linha contém o nome, a idade e a nota de um aluno, separados por dois-pontos, desta forma:

David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91

Para ordenar este arquivo por idade (segundo campo) e depois por nota (terceiro campo) caso as idades sejam iguais, usaremos:

sort -t: -k2n -k3nr ~/project/student_records.txt

Aqui está o significado de cada parte do comando:

  • -t: especifica que os campos são separados por dois-pontos.
  • -k2n ordena com base no segundo campo (idade) de forma numérica.
  • -k3nr em seguida, ordena com base no terceiro campo (nota) de forma numérica e em ordem reversa.

Isso exibirá os registros dos alunos ordenados primariamente por idade (crescente) e secundariamente por nota (decrescente) quando as idades forem as mesmas:

Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87

Este tipo de ordenação com múltiplas chaves é extremamente útil quando você precisa organizar dados com base em vários critérios. Neste caso, estamos agrupando alunos por idade e, dentro de cada grupo de idade, classificando-os por suas notas.

Removendo Entradas Duplicadas

Às vezes, os registros de alunos podem conter duplicatas, talvez devido a erros de digitação ou múltiplos envios. Vamos aprender como remover essas duplicatas.

Primeiro, vamos olhar um arquivo com possíveis duplicatas:

cat ~/project/student_clubs.txt

Você pode ver algo assim:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club

Para ordenar esta lista e remover as duplicatas, usaremos a opção -u:

sort -u ~/project/student_clubs.txt

Este comando exibirá uma lista ordenada de participações únicas em clubes estudantis:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team

A opção -u (unique) instrui o sort a produzir apenas a primeira ocorrência de uma sequência de linhas iguais. Em outras palavras, ele remove linhas duplicadas após a ordenação. Isso é particularmente útil quando você precisa criar uma lista de entradas exclusivas ou quando está tentando identificar e eliminar dados redundantes.

Note que "Bob Smith" aparece duas vezes porque ele está em dois clubes diferentes — essas linhas não são consideradas duplicadas, pois o conteúdo total da linha é diferente.

Resumo

Neste laboratório, você aprendeu como usar o comando sort para organizar vários tipos de dados de alunos. Você explorou diversas opções úteis:

  • Ordenação alfabética básica
  • Ordenação numérica com -n
  • Ordenação reversa com -r
  • Ordenação por múltiplos campos com -k
  • Uso de separadores de campo personalizados com -t
  • Remoção de duplicatas com -u

Outras opções úteis do sort incluem:

  • -f: Ignorar a diferença entre maiúsculas e minúsculas ao ordenar
  • -b: Ignorar espaços em branco no início da linha
  • -c: Verificar se a entrada já está ordenada
  • -o: Gravar a saída em um arquivo em vez da saída padrão (terminal)

Essas habilidades serão valiosas ao gerenciar e analisar dados em diversos contextos profissionais, não apenas em ambientes educacionais.