Ordenação Numérica e Separadores de Campo
Em muitos cenários do mundo real, pode ser necessário ordenar arquivos contendo valores numéricos ou dados com vários campos. O comando sort fornece opções para esses cenários.
Ordenação Numérica
Vamos criar um arquivo com valores numéricos para explorar a ordenação numérica:
- Crie um arquivo chamado
numbers.txt:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- Visualize o conteúdo do arquivo:
cat numbers.txt
Você deve ver:
10
5
100
20
1
50
- Se você usar o comando
sort básico neste arquivo:
sort numbers.txt
A saída será:
1
10
100
20
5
50
Observe que isso não está na ordem numérica correta porque sort trata cada linha como texto por padrão. A string "100" vem antes de "20" na ordem lexicográfica (dicionário).
- Para ordenar numericamente, use a opção
-n:
sort -n numbers.txt
Agora você verá a ordem numérica correta:
1
5
10
20
50
100
Ordenando Arquivos com Múltiplos Campos
Frequentemente, os arquivos contêm vários campos separados por delimitadores como vírgulas, tabulações ou espaços. O comando sort permite que você especifique em qual campo ordenar.
- Crie um arquivo CSV (Valores Separados por Vírgula) com alguns dados de exemplo:
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
- Visualize o conteúdo do arquivo:
cat people.csv
Você deve ver:
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
- Para ordenar este arquivo pelo segundo campo (Idade), use a opção
-t para especificar o separador de campo (vírgula neste caso) e a opção -k para especificar o número do campo:
sort -t, -k2,2n people.csv
A opção -t, define o separador de campo como vírgula, e -k2,2n diz ao sort para usar o segundo campo para ordenação e tratá-lo como um valor numérico.
A saída deve ser:
Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
- Você também pode ordenar pelo terceiro campo (Cidade) alfabeticamente:
sort -t, -k3,3 people.csv
A saída será:
Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle
Ao usar essas opções, você pode ordenar efetivamente arquivos com vários formatos de dados de acordo com suas necessidades.