No nosso último artigo, cobrimos vários exemplos do comando ‘sort‘. Se você perdeu, pode se atualizar seguindo o link abaixo. Neste post, continuaremos de onde paramos no artigo anterior, para cobrir os aspectos restantes do comando. Desta 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 de acordo.
sort -M month.txt
16. Ordenando a Saída por Tamanho de Arquivo em Formato Legível
O seguinte comando combina os comandos ‘ls‘ e ‘sort‘ para realizar duas tarefas. Primeiro, lista o conteúdo do diretório inicial do usuário em formato longo e, em seguida, encaminha essa lista de diretórios para o comando ‘sort’ para imprimir os tamanhos dos arquivos em um formato legível, 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 status de ordenação de ambos os arquivos, vamos utilizar o comando ‘sort‘, 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 ...</code.
Crie um arquivo de texto onde os conteúdos são separados por +
. Use o comando cat para verificar os conteúdos 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 1º campo que é numérico.
sort -t '+' -nk1 delimiter.txt
O segundo é baseado no 4º campo que é não numérico.
Se o delimitador for Tab, você pode usar $'\t'
no lugar de '+'
, como mostrado no exemplo acima.
19. Ordenando Aleatoriamente a Saída por Tamanho do Arquivo
Ordene a saída do comando ls -l para seu diretório home 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, provavelmente obterá um resultado diferente, pois o resultado é gerado aleatoriamente.
Como evidente da Regra número – 2 do último artigo, o comando sort prefere linhas que começam com caracteres minúsculos em vez de maiúsculos. Também verifique o exemplo 3 no último artigo, onde a string ‘laptop‘ aparece antes da string ‘LAPTOP‘.
20. Substituindo as Preferências Padrão de Classificação
Como substituir a preferência padrão de classificação? Antes de podermos substituir a preferência padrão de classificação, precisamos exportar a variável de ambiente 'LC_ALL'
para 'C'
.
Para fazer isso, execute o código abaixo em seu prompt de comando.
export LC_ALL=C
E então ordene o arquivo de texto ‘tecmint.txt‘ substituindo a preferência de classificação padrão.
$ sort tecmint.txt
Não se esqueça de comparar a saída com aquela que você obteve no exemplo 3 e você 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 executarmos o ‘sort‘ em dois arquivos de entrada e os unirmos de uma vez?
Vamos criar dois arquivos de texto, nomeadamente ‘arquivo1.txt‘ e ‘arquivo2.txt‘, e preenchê-los com alguns dados. No ‘arquivo1.txt‘, adicionaremos números como 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 ‘arquivo2.txt‘ com alguns dados também.
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
Agora, ordene 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 ordenação básica por ordem alfabética, aventuramo-nos na ordenação numérica e baseada em datas, e até abordamos delimitadores personalizados. Também aprendemos como substituir preferências de ordenação padrão para atender às nossas necessidades.
Além disso, discutimos técnicas para verificar se um arquivo já está ordenado e combinamos operações ‘sort‘ para vários arquivos de entrada. Com o conhecimento adquirido aqui, você tem uma ferramenta poderosa à sua disposição para ordenar e organizar dados eficientemente em um ambiente Linux.
Esperamos que este artigo tenha sido esclarecedor e útil para suas empreitadas 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/