O comando ‘sort’ é um programa Linux usado para imprimir linhas de arquivos de texto de entrada e concatenar todos os arquivos em ordem alfabética. O comando sort considera o espaço em branco como separador de campos e o arquivo de entrada inteiro como a chave de classificação. É importante observar que o comando sort não classifica realmente os arquivos, mas apenas imprime a saída classificada até que você redirecione a saída.
Este artigo visa um insight profundo no comando ‘sort’ do Linux com 14 exemplos práticos úteis que mostram como usar o comando sort no Linux.
1. Criando um Arquivo de Texto com Conteúdo Específico
Primeiramente, criaremos um arquivo de texto chamado ‘tecmint.txt’, que será usado para executar os exemplos do comando ‘sort’ em nosso diretório de trabalho, que é ‘/home/$USER/Desktop/tecmint‘.
A opção ‘-e
‘ no comando abaixo permite a interpretação de barra invertida e /n
diz ao comando echo para escrever cada corda em uma nova linha.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Ver o Conteúdo do Arquivo
Antes de começarmos com o comando ‘sort’, vamos dar uma olhada no conteúdo do arquivo e como ele aparece usando o seguinte comando cat.
cat tecmint.txt
3. Ordenando o Conteúdo do Arquivo
O comando“sort tecmint.txt” é usado para reorganizar as linhas no arquivo em ordem alfabética crescente. Se houver linhas duplicadas, ele manterá apenas uma cópia de cada linha única.
sort tecmint.txt
4. Redirecionando a Saída Ordenada para um Novo Arquivo
O comando a seguir é usado para ordenar as linhas do arquivo de texto“tecmint.txt” em ordem alfabética e, em seguida, redireciona a saída ordenada para um novo arquivo chamado“sorted.txt”. Isso significa que o arquivo original permanece inalterado e o conteúdo ordenado é armazenado em um arquivo separado.
Para verificar o conteúdo, use o comando cat.
sort tecmint.txt > sorted.txt cat sorted.txt
5. Ordenando o Conteúdo do Arquivo em Ordem Reversa
O comando a seguir é usado para ordenar as linhas do arquivo de texto“tecmint.txt” em ordem reversa, o que significa que ele organizará as linhas em ordem alfabética decrescente e a saída ordenada é redirecionada para um novo arquivo chamado“reversesorted.txt”.
sort -r tecmint.txt > reversesorted.txt cat reversesorted.txt
6. Salvando a Lista de Arquivos e Diretórios
O comando a seguir é usado para listar o conteúdo do diretório de casa do usuário (“/home/$USER“) em uma visualização detalhada e longa usando o comando ls e, em seguida, redireciona essa listagem de diretório para um arquivo de texto chamado “lsl.txt” localizado na área de trabalho do usuário, especificamente no diretório “tecmint“.
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt cat lsl.txt
Agora, exploraremos exemplos de classificar o conteúdo com base em campos diferentes dos caracteres iniciais padrão.
7. Classificação ‘Conteúdo do Arquivo com base no Segundo Campo
O comando a seguir é usado para classificar o conteúdo do arquivo “lsl.txt” com base nos valores no segundo campo de cada linha. A opção '-n'
indica uma classificação numérica, tratando o segundo campo como números em vez de texto.
A opção '-k2'
especifica que queremos classificar com base no segundo campo. Ao executar esse comando, você obterá uma lista classificada das linhas em “lsl.txt“, com o critério de classificação sendo os valores numéricos no segundo campo de cada linha.
sort -nk2 lsl.txt
8. Classificação do Conteúdo do Arquivo com base no Nono Campo
O comando a seguir é usado para classificar as linhas no arquivo “lsl.txt” com base nos valores no nono campo de cada linha em ordem ascendente. A opção '-k9'
especifica que a classificação deve ser feita com base no nono campo.
sort -k9 lsl.txt
9. Classificar Arquivos por Tamanho do Arquivo
O seguinte comando combina os comandos ‘ls‘ e ‘sort‘ para listar o conteúdo do diretório do usuário em um formato de listagem longo e, em seguida, canaliza a listagem do diretório para ‘sort -nk5
‘, que classifica a lista com base nos valores na quinta coluna, que representa os tamanhos dos arquivos.
ls -l /home/$USER | sort -nk5
10. Removendo Linhas Duplicadas em Arquivo
O seguinte comando classifica as linhas no arquivo “tecmint.txt” em ordem alfabética ascendente e remove quaisquer linhas duplicadas usando a opção ‘-u
‘, que significa “único”, e garante que as linhas únicas sejam retidas na saída classificada.
$ cat tecmint.txt $ sort -u tecmint.txt
Regras até agora (o que observamos):
- Linhas que começam com números são preferidas na lista e ficam no topo até que seja especificado o contrário (
-r
). - Linhas que começam com letras minúsculas são preferidas na lista e ficam no topo até que seja especificado o contrário (
-r
). - Os conteúdos são listados com base na ocorrência de letras no dicionário até que seja especificado o contrário (
-r
). - O comando sort, por padrão, trata cada linha como uma string e a classifica dependendo da ocorrência de letras no dicionário (preferência numérica; veja a regra -1) até que seja especificado o contrário.
11. Redirecionando a Listagem do Diretório para Arquivo
O comando a seguir lista o conteúdo do diretório home do usuário em formato longo, incluindo arquivos e diretórios ocultos, e depois redireciona a listagem de diretórios para um arquivo de texto chamado “lsla.txt” localizado na área de trabalho do usuário dentro do diretório “tecmint“.
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt cat lsla.txt
Aqueles familiarizados com o comando ls entendem que 'ls -lA'
é equivalente a 'ls -l'
mais arquivos ocultos. Como resultado, a maioria do conteúdo nesses dois comandos será a mesma.
12. Ordenando o Conteúdo de Arquivos
O comando a seguir ordena o conteúdo de dois arquivos de texto, ‘ lsl.txt ‘ e ‘ lsla.txt ‘, em ordem alfabética ascendente e depois mescla e exibe o conteúdo ordenado no terminal.
$ sort lsl.txt lsla.txt
Observe a repetição de arquivos e pastas.
13. Removendo Linhas Duplicadas em Arquivo
O comando a seguir mescla e ordena o conteúdo de dois arquivos de texto, ‘ lsl.txt ‘ e ‘ lsla.txt ‘, em ordem alfabética ascendente enquanto remove quaisquer linhas duplicadas usando a opção '-u'
, que garante que linhas únicas sejam retidas na saída ordenada.
$ sort -u lsl.txt lsla.txt
Observe que os duplicatas foram omitidas da saída. Além disso, você pode salvar a saída em um novo arquivo redirecionando-a.
14. Ordenando a Saída por Múltiplos Campos Usando Delimitador Personalizado
O comando a seguir combina os comandos‘ls‘ e‘sort‘ para listar o conteúdo do diretório home do usuário em formato longo e, em seguida, encaminha a listagem do diretório para o comando‘sort‘, que ordena a saída com base em colunas e campos específicos.
ls -l /home/$USER | sort -t "," -nk2,5 -k9
Aqui está uma análise do comando:
-t ","
– especifica que uma vírgula(",")
é usada como delimitador de campo.-nk2,5
– indica a ordenação por valor numérico nas colunas2 a5, que geralmente representam detalhes de permissões e propriedade.-k9
– ordena ainda mais o resultado com base na nona coluna, que representa os tamanhos dos arquivos.
Isso é tudo por agora. Na próxima postagem, abordaremos exemplos mais detalhados do comando sort para você.
Por favor, continue a compartilhar, comentar, curtir e nos ajudar a alcançar um público mais amplo.