- Gerar link
- X
- Outros aplicativos
Postagem em destaque
- Gerar link
- X
- Outros aplicativos
Só grep
Juliano Santos
02/12/2016
O comando grep procura por linhas que respeitem a expressão regular mencionada. Todas as linhas encontradas são mostradas na saída padrão.
Para aqueles que precisam constantemente filtrar informações, sejam elas na saída de um comando ou até mesmo o conteúdo de um arquivo; o grep torna-se seu fiel escudeiro.
Segue abaixo algumas aplicações do comando:
# Hora no padrão 12 horas (HH:MM) grep -E '^(0[1-9]|1[0-2]):[0-5][0-9]$' # Hora no padrão 12 horas (HH:MM:SS) grep -E '^(0[1-9]|1[0-2])(:[0-5][0-9]){2}$' # Hora no padrão 24 horas (HH:MM) grep -E '^([01][0-9]|2[0-3]):[0-5][0-9]$' # Hora no padrão 24 horas (HH:MM:SS) grep -E '^([01][0-9]|2[0-3])(:[0-5][0-9]){2}$$' # Data no formato dd/mm/aa grep -E '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/([0-9]{2})$' # Data no formato dd/mm/aaaa grep -E '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/([0-9]{4})$' # Dara por extenso no formato: DIA_SEMANA, DIA_MES de MES de ANO grep -E '^([Ss]egunda|[Tt]erça|[Qq]uarta|[Qq]uinta|[Ss]exta|[Ss]ábado|[Dd]omingo),\s*(0[1-9]|[12][0-9]|3[01])\s+de\s+([Jj]aneiro|[Ff]evereiro|[Mm]arço|[Aa]bril|[Mm]aio|[Jj]unho|[Jj]ulho|[Aa]gosto|[Ss]etembro|[Oo]utubro|[Nn]ovembro|[Dd]ezembro)\s+de\s+[0-9]{4}$' # Email grep -E '[a-zA-Z_-.]+@ [0-9a-zA-Z.-]+\.[a-z]{2,3}$' # Intervalo 1000 à 3500 grep -E '^([1-2][0-9]{3}|3[0-4][0-9]{2}|3500)$' # Somente número pares. grep -E '^[0-9]*[02468]$' # Somente números ímpares grep -E '^[0-9]*[13579]$' # Filtrar nossa moeda real :( # Formato: x.xxx,xx grep -E '^[0-9]{1,3}\b(\.[0-9]{3})*,[0-9]{2}$' # Simulando comando wc -w (considera caracteres especiais) # Total de palavras em um arquivo. grep -Eo "\w+" | egrep -c '.' # Simulando comando wc -l # Total de linhas em um arquivo. grep -c '.*$' # Simulando comando wc -c # Total de caracteres exceto espaços. grep -o '.' | grep -Ec '\S' # Somente as palavras que iniciam com letra maiúscula. grep -Eo '\b[A-Z]\w+' # Telefone residencial no formato: (xx) xxxx-xxxx grep -E '^\([0-9]{2}\)\s*[0-9]{4}-[0-9]{4}$' # Telefone móvel no formato: (xx) xxxxx-xxxx grep -E '^\([0-9]{2}\)\s*[0-9]{5}-[0-9]{4}$' # Filtra endereço IP com os octetos dentro do intervalo # de 0 à 255, exceto com zeros consecutivos. grep -E '^(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])$' # MAC Address 'xx:xx:xx:xx:xx:xx' grep -E '^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$' # CPF # Formato: xxx.xxx.xxx-xx grep -E '^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$' # CNPJ # Formato: xx.xxx.xxx/xxxx-xx grep -E '^[0-9]{2}\.[0-9]{3}\.[0-9]{3}/[0-9]{4}-[0-9]{2}$' # Número positivo ou negativo. grep -E '^(-?[0-9]{1,})$' # Somente número negativo grep -E '^-[0-9]{1,}$' # Base hexadecimal grep -E '^[0-9a-fA-F]{1,}$' # Base binária grep -E '^1[01]{1,}$' # Somente a cadeia de caracteres entre parênteses grep -Eo '\([^)]*\)' # Extrai extensão de um arquivo grep -Eo '\b\w+$' # Simulando comando 'dirname' grep -Eo '^/.*/' # Simulando o comando 'basename' grep -Eo '(\w\s*)+\w*\.[a-z0-9]+$' # Somente os números em intervalos de 100. grep -E '^[0-9]*[0-9]00$' # Endereço http ou https grep -E '^https?://([A-Za-z0-9_-]+[.]){1,3}[a-z]{2,3}/?$' # Somente linhas com no máximo 10 caracteres grep -E '^.{1,10}$' # Somente linhas com no mínimo 10 caracteres grep -E '^.{10,}' # Verifica complexidade de senha # Requisitos: # Mínimo 8 caracteres. # "" 1 caractere minúsculo. # "" " "" maiúsculo. # "" " "" caractere especial. # "" " dígito de 0 à 9 grep -P '^.*(?=.{8,})(?=.*[A-Z])(?=.*\d)(?=.*\W)(?=.*[a-z]).*$' # Remove linhas comentadas grep -v '^\s*#' # Remove linhas em branco grep -v '^$' # Simulando o comando head -10 # Imprime as 10 primeiras linhas do arquivo grep -m 10 '.*$' # Ignora linhas contendo arquivo com extensão do word. (maldade) grep -P '^.*(?<!\.doc|\.docx)$' # Aplicando no arquivo '/etc/passwd', retorna somente as linhas # dos usuários que possuem o UID entre 1000 e 1999 grep -E '^(\w+:){3}1[0-9]{3}.*$' # Número com duas casas decimais separadas por '.' (ponto) ou ',' (vírgula) grep -E '^[0-9]+[,.][0-9]{2}$' # Imprimindo somente as linhas pares do arquivo. grep -n '.*$' | grep -E '^[0-9]*[2468]' # Imprimindo somente as linhas impares do arquivo grep -n '.*$' | grep -E '^[0-9]*[13579]' # CEP # Formato: xxxxx-xxx grep -E '^[0-9]{5}-[0-9]{3}$' # Somente unidades de medida de informação começando # com um ou mais dígitos. # Exemplo: 1K, 22M, 763G, ... grep -E '^[0-9]+[KMGTPEZY]$' # Somente uma letra intercalada com um dígito # Exemplo: a1b2c3 grep -E '^([a-zA-Z][0-9]|[0-9][a-zA-Z])+$' # Imprime 2 linhas anteriores a qualquer linha em branco grep -B2 '^$' # Imprime 4 linhas posteriores a qualquer linha em branco grep -A4 '^$' # Imprime 2 linhas anteriores e posteriores a qualquer linha em branco grep -C4 '^$' # Busca por múltiplas palavras sem usar conjuntos (..|..). grep -F 'palavra1 palavra2 palavra3 '
Nota: Em alguns exemplos acima, utilizei caracteres âncora (^ e $) para forçar a validação de campos, caso deseje validar a expressão em qualquer posição em uma cadeia de caracteres, remova-os.
Se encontrarem algum erro, comentem a respeito, deem dicas ou sugestões para novas aplicações do comando.
Comentários
Postar um comentário