Tratamento de texto pelo terminal (cat, cut, grep, tr, uniq, short, paste)

Raul Esteves
4 min readJun 22, 2018

Nesta série “O terminal é amigo” mostrarei alguns comandos bem úteis e interessantes para usarmos no terminal (ou em Shell Script). Neste artigo serão demonstrados os comandos que podemos utilizar para tratar um texto. Os comandos abordados serão os seguintes:

  • cat: tem por finalidade exibir o conteúdo de um arquivo sem abri-lo
  • cut: é um delimitador de arquivos, pode ser utilizado para delimitar um arquivo em colunas, numero de caracteres ou posição do campo
  • grep: busca um texto dentro de um arquivo
  • tr: usado para converter caracteres ou trocar um conjunto por outro
  • uniq: deleta linhas repetidas, desde que estejam em sequencia
  • sort: permite organizar um arquivo em ordem crescente (a-z) ou decrescente (z-a). Ajuda no uso do comando anterior.
  • paste: permite concatenar arquivos.
  • sed e awk: pretendo abordar apenas os dois em um único artigo.
  • E o que é o nano, o vi e o vim? Editores de texto pelo próprio terminal

Bom, tendo uma visão geral sobre eles, vamos a alguns exemplos:

O cat como vimos tem um uso bem simples, exibiremos no terminal o conteúdo do arquivo:

Comando cat

O cut delimita o arquivo e existem algumas opções como:
-b (bytes)
-c (characters)
E a opção mais utilizada, que é com os parâmetros -f (field) que informa a posição do campo e -d (delimite) que é uma opção para uso com o -f e que especifica o carácter delimitador, na ausência do -d será considerado TAB.
No arquivo teste.txt temos os seguintes dados:

raul: 123456
felix: 654321
gabriel: 987654
miguel: 456789S

Vamos buscar apenas o login, depois apenas as senhas e depois ambos:

Comando cut

O grep é um comando de busca (Globally Search a Regular Expression and Print).
Síntaxe: grep [expressão] [arquivo] [opções]

Algumas opções:
-A [número] mostra o [numero] de linhas existentes após a linha encontrada pelo grep
-B [número] mostra o [numero] de linhas existentes antes da linha encontrada
-f [arquivo] específica que o texto que será localizado esta no [arquivo]
-h não mostra os nomes dos arquivos durante a procura
-i ignora a diferença entre maiúsculas e minusculas no arquivo encontrado.
-n mostra o numero da linha encontrada pelo grep
-U trata o arquivo que será procurado como binário

Vamos usar o exemplo anterior para fazer uma busca pela senha, uma busca pelo usuário e novamente uma busca pelo usuário mas também solicitando as duas próximas linhas:

Comando grep

Com o tr conseguimos trocar um carácter ou um conjunto por outro, podendo por exemplo, deixar todas as letras maiusculas, trocar um “:” por “-”, um ‘enter’ por um ‘espaço’, ou simplesmente deletar algum carácter utilizando um um parâmetro. Vamos a alguns parâmetros, sintaxe e aos 3 exemplos citados, usando o mesmo arquivo do ex anterior.

Opções mais usadas:
-d que elimina os carácteres especificados
-s que comprime a sequencia de caracteres repetidos

Sintaxe criando um novo arquivo: tr [caracter1] [caracter2] <arquivo1> [arquivoNovo]
Sintaxe apenas para exibição, sem modificar o arquivo: cat [arquivo] | tr [caracter1] [caracter2]

A opção de escolher a sintaxe com o cat foi só pra facilitar a visualização.

Comando tr

O comando unique deleta linhas repetidas, desde que estejam em sequencia. Caso elas não estejam, o próximo comando (sort) irá nos auxiliar. Vejamos a sintaxe e alguns exemplos.

Sintaxe criando um novo arquivo: uniq [arquivo] [arquivoNovo]
Sintaxe apenas para exibição, sem modificar o arquivo: uniq [arquivo]

Comando uniq

Com o sort organizaremos o arquivo anterior em ordem crescente e decrescente com o parâmetro -r

Comando sort

O comando paste nos permite concatenar arquivos, é bem simples:
Sintaxe: paste [arquivo1] [arquivo2]

Comando paste

Curtiu o artigo? Então esmaga a palminha /o/
Bom, por hoje é só, espero ter ajudado.
Utilizei como fonte alguns materiais da faculdade (obrigado prof Dora).

--

--