Tratamento de texto pelo terminal (cat, cut, grep, tr, uniq, short, paste)
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:
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:
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:
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.
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]
Com o sort organizaremos o arquivo anterior em ordem crescente e decrescente com o parâmetro -r
O comando paste nos permite concatenar arquivos, é bem simples:
Sintaxe: paste [arquivo1] [arquivo2]
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).