O comando ‘sort’ é um programa do Linux usado para imprimir linhas de arquivos de texto de entrada e concatenar todos os arquivos em ordem classificada. O comando Sort usa o espaço em branco como separador de campo e todo o arquivo de entrada como chave de classificação. É importante notar que o comando sort não classifica realmente os arquivos, mas apenas imprime a saída classificada até você redirecionar a saída.
Este artigo visa uma visão profunda do comando Linux ‘sort‘ com 14 exemplos práticos úteis mostrando como usar o comando sort no Linux.
1. Criando um Arquivo de Texto com Conteúdo especificado
Primeiro, criaremos um arquivo de texto chamado ‘tecmint.txt‘, que será usado para executar exemplos de comando ‘sort‘ na nossa pasta de trabalho desta tarefa é ‘/home/$USER/Desktop/tecmint‘.
A opção ‘-e
‘ no comando abaixo habilita a interpretação do caractere de escape e /n
diz ao comando echo para escrever cada string em uma nova linha.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Visualizar Conteúdo do Arquivo
Antes de começarmos com o comando ‘sort‘, vamos ver o 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 ascendente. Se houver linhas duplicadas, ele manterá uma cópia de cada linha única.
sort tecmint.txt
4. Redirecionando a Saída Ordenada para um Novo Arquivo
O seguinte comando é 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 seguinte comando é 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 visão detalhada e em formato longo 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 classificação do conteúdo com base em campos diferentes dos caracteres iniciais padrão.
7. Classificação dos ‘Conteúdos 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 este comando, você obterá uma lista classificada das linhas em ” lsl.txt“, sendo o critério de classificação os valores numéricos no segundo campo de cada linha.
sort -nk2 lsl.txt
8. Ordenar o 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 comando a seguir combina os comandos ‘ls‘ e ‘sort‘ para listar o conteúdo do diretório do usuário em um formato de listagem longa e, em seguida, encaminha a listagem do diretório para ‘sort -nk5
‘, que ordena 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 comando a seguir ordena 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 ordena dependendo da ocorrência de letras no dicionário (números preferidos; veja a regra – 1) até que seja especificado o contrário.
11. Redirecionando a Listagem do Diretório para Arquivo
O seguinte comando lista o conteúdo do diretório do usuário em formato longo, incluindo arquivos e diretórios ocultos, e depois redireciona a listagem do diretório 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 seguinte comando ordena o conteúdo de dois arquivos de texto, ‘ lsl.txt ‘ e ‘ lsla.txt ‘, em ordem alfabética ascendente e depois combina 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 seguinte comando 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 classificada.
$ 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. Ordenação de Saída por Vários 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 classifica 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 classificação por um valor numérico nas colunas 2 a 5, que geralmente representam detalhes de permissões e propriedade.-k9
– classifica ainda mais o resultado com base na nona coluna, que representa os tamanhos dos arquivos.
Isso é tudo por agora. Na próxima matéria, vamos mergulhar em exemplos mais detalhados do comando sort para você.
Por favor, continue a compartilhar, comentar, curtir e nos ajudar a alcançar um público maior.