Vinícius Hansen

Shell Script parte 2: Utilitários GNU e expressões regulares

A maioria dos comandos que utilizamos nos terminais “linux” são na verdade utilitários feitos pelo projeto GNU baseados em utilitários unix. Neste post farei uma listagem dos principais utilitários e uma breve explicação sobre o uso que eu já encontrei para cada um deles. Os utilitários que listei aqui não são complexos, mas são muito extensivos. Então o que mostrarei aqui é apenas a ponta do iceberg.


• sed (stream editor)

o sed é utilizado para modificar streams de texto, suas principais funções são a de substituir ou deletar padrões em strings. Aqui estão algumas flags do comando e algumas demonstrações do seu uso:

• awk

AWK na verdade é uma linguagem de script e programação que foi criada na mesma época que o C. Mas aqui vou abordar um uso muito superficial do comando.

Quando houver um arquivo de texto ou um output de algum comando com mais de uma coluna podemos fazer o seguinte:

awk '{print $1}' arquivo.txt #para printar a primeira coluna
awk '{print $2}' arquivo.txt #para printar a segunda coluna coluna
# etc...

também podemos usar condições, regex e um monte de coisas.

• grep

O grep retorna as linhas em que a string é mencionada

$ man wc | grep print
  wc - print newline, word, and byte counts for each file
  specified.  A word is a non-zero-length sequence of  printable  characters...
  The options below may be used to select which counts are printed, always in the following order:
            print the byte counts
            print the character counts
            print the newline counts
            print the maximum display width
            print the word counts

• find

Nesse exemplo o find irá deletar os arquivos que existem a mais de 10 dias no diretório onde o comando foi executado

find . -mtime +10 -type f -delete

Algumas opções:

• wc

o wc é utilizado para contagem:


Achando padrões com um pouco de expressões regulares (regex)

Expressões regulares são um “tipo de código” utilizado para buscar padrões, realizar validações e substituições. Em regex, utilizamos os cochetes [] para especificar os caracteres que buscamos. Caso busquemos [io], será feita uma busca pelos caracteres i e o em vez de io (em sequência).

Para buscar datas por exemplo podemos utilizar [0-9]{2}/[0-9]{2}/[0-9]{4}, que significa dd/mm/aaaa.

Para buscar um cpf seria bem parecido: [0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}

mais algumas coisas úteis:

[02] 0 ou 2
[2] 2
[2]{2} 22
$ fim da linha
^ começo da linha

Escrito por Vinícius Hansen