7 Exemplos Interessantes do Comando ‘sort’ no Linux – Parte 2

No nosso último artigo, cobrimos vários exemplos do comando ‘sort‘. Se você perdeu, pode acompanhar seguindo o link abaixo. Neste post, continuaremos de onde paramos no artigo anterior, para cobrir os aspectos restantes do comando. Dessa forma, ambos os artigos juntos servirão como um guia abrangente para o comando ‘sort‘ do Linux.

Antes de prosseguirmos, por favor crie um arquivo de texto chamado ‘month.txt‘ e preencha-o com os dados fornecidos abaixo.

echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt
cat month.txt

15. Ordenando o Conteúdo do Arquivo por Mês

O seguinte comando ordena o conteúdo do arquivo “month.txt” em ordem cronológica com base na abreviação ou nome do mês usando a opção '-M' que instrui o comando ‘sort‘ a tratar os dados como datas e ordená-los adequadamente.

sort -M month.txt

16. Ordenando a Saída por Tamanho de Arquivo em Formato Legível por Humanos

O seguinte comando combina os comandos ‘ls‘ e ‘sort‘ para realizar duas tarefas. Primeiro, lista o conteúdo do diretório home do usuário em formato longo e, em seguida, direciona essa listagem de diretório para o comando ‘sort’ para imprimir os tamanhos dos arquivos em um formato legível por humanos, facilitando a identificação dos maiores e menores arquivos no diretório.

ls -l /home/$USER | sort -h -k5

17. Verificando Arquivos Ordenados para Consistência

No artigo anterior, geramos dois arquivos de texto: ‘sorted.txt‘ no exemplo número 4 e ‘lsl.txt‘ no exemplo número 6. Estamos cientes de que ‘sorted.txt‘ já está ordenado, enquanto ‘lsl.txt‘ não está.

Para verificar o estado de ordenação de ambos os arquivos, iremos utilizar o comando ‘sort‘, o que nos permitirá confirmar se ‘sorted.txt‘ permanece na ordem correta e se ‘lsl.txt‘ requer ordenação.

sort -c sorted.txt

Se retornar 0, significa que o arquivo está ordenado e não há conflito.

sort -c lsl.txt

18. Manipulação de Delimitadores Quando Não Usando Espaços no Arquivo

Se o delimitador (separador) entre palavras for um espaço, o comando ‘sort‘ interpreta automaticamente qualquer coisa após um espaço horizontal como uma nova palavra. Mas o que acontece quando o delimitador não é um espaço?

Considere um arquivo de texto, cujos conteúdos são separados por qualquer coisa que não seja espaço, como '|' ou '\' ou '+' ou '.' ou ....

Crie um arquivo de texto onde os conteúdos são separados por +. Use o comando cat para verificar o conteúdo do arquivo.

echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt

Agora ordene este arquivo com base no campo que é numérico.

sort -t '+' -nk1 delimiter.txt

O segundo é baseado no campo que não é numérico.

Se o delimitador for Tab, você pode usar $'\t' no lugar de '+', como mostrado no exemplo acima.

19. Ordenação Aleatória da Saída por Tamanho de Arquivo

Ordene a saída do comando ls -l para o seu diretório inicial com base na quinta coluna, que representa a ‘quantidade de dados’, em ordem aleatória.

ls -l /home/avi/ | sort -k5 -R 

Toda vez que você executar o trecho de script acima, é provável que obtenha um resultado diferente, pois o resultado é gerado aleatoriamente.

Como fica claro na Regra número – 2 do último artigo, o comando sort prefere linhas que começam com caracteres minúsculos em relação aos maiúsculos. Verifique também o exemplo 3 no último artigo, onde a string ‘laptop‘ aparece antes da string ‘LAPTOP‘.

20. Substituindo as Preferências de Ordenação Padrão

Como substituir a preferência de ordenação padrão? Antes de podermos substituir a preferência de ordenação padrão, precisamos exportar a variável de ambiente 'LC_ALL' para 'C'.

Para fazer isso, execute o código abaixo no prompt de comando.

export LC_ALL=C

E então ordene o arquivo de texto ‘tecmint.txt‘ substituindo a preferência de ordenação padrão.

$ sort tecmint.txt

Não se esqueça de comparar a saída com a que você obteve no exemplo 3 e também pode usar a opção ‘-f‘ também conhecida como ‘--ignore-case‘ para obter uma saída mais organizada.

$ sort -f tecmint.txt

21. Combinando Dois Arquivos de Entrada em uma Única Operação

E se executássemos ‘sort‘ em dois arquivos de entrada e os uníssemos de uma vez?

Vamos criar dois arquivos de texto, nomeadamente ‘file1.txt‘ e ‘file2.txt‘, e preenchê-los com alguns dados. Em ‘file1.txt‘, adicionaremos números conforme mostrado abaixo. Também usaremos o comando cat para inspecionar o conteúdo do arquivo

echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt
cat file1.txt

E preencheremos o segundo arquivo ‘file2.txt‘ com alguns dados.

echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt
cat file2.txt

Agora, classifique e una a saída de ambos os arquivos.

join <(sort -n file1.txt) <(sort file2.txt)

Conclusão

Em conclusão, este artigo explorou vários aspectos do comando ‘sort‘ no Linux. Começamos com a classificação básica por ordem alfabética, aventuramo-nos na classificação numérica e baseada em datas, e até abordamos delimitadores personalizados. Também aprendemos como substituir as preferências de classificação padrão para atender às nossas necessidades.

Além disso, discutimos técnicas para verificar se um arquivo já está classificado e combinar operações ‘sort‘ para vários arquivos de entrada. Com o conhecimento adquirido aqui, você tem uma ferramenta poderosa à sua disposição para classificar e organizar dados eficientemente em um ambiente Linux.

Esperamos que este artigo tenha sido esclarecedor e útil para suas atividades na linha de comando. Continue explorando, aprendendo e dominando a arte do ‘sort‘ para aprimorar suas habilidades no Linux.

Source:
https://www.tecmint.com/linux-sort-command-examples/