
grep é um utilitário de linha de comando para procurar conjuntos de dados de texto simples para as linhas que correspondem a uma expressão regular.
grep [OPÇÕES] expressão_regular arquivo
| Caracter | Descrição | 
|---|---|
| . | Qualquer letra | 
| ^ | início da linha | 
| $ | final da linha | 
| [xyz] | Qualquer das letras dentro dos colchetes | 
| [^xyz] | Qualquer letra fora as dentro dos colchetes | 
| [t-z] | Qualquer das letras entre t e z | 
| z* | Letra z zero ou mais vezes | 
| z+ | Letra z uma ou mais vezes | 
| ?{0,1} | Pode aparecer ou não (opcional) | 
| *{0,} | Pode aparecer em qualquer quantidade | 
| +{1,} | Deve aparecer no mínimo uma vez | 
| a{2} | Casa a letra 'a' duas vezes | 
| a{2,4} | Casa a letra 'a' de duas a quatro vezes | 
| a{2,} | Casa a letra 'a' no mínimo duas vezes | 
| .* | Casa qualquer coisa, é o tudo e o nada | 
| ^ | início da linha | 
| $ | final da linha | 
| [abc] | casa com os caracteres a, b e c | 
| [a-c] | casa com os caracteres a, b e c | 
| [^abd] | não casa com os caracteres a, b e d | 
| (um|dois) | casa com as palavras um e dois | 
| Repetições | |
| a{2} | casa com a letra “a” duas vezes | 
| a{2,5} | casa com a letra “a” duas a cinco vezes | 
| a{2,} | casa com a letra “a” duas vezes ou mais | 
| a? | casa com “a” letra a zero vezes ou uma | 
| a* | casa com a letra “a” zeros vezes ou mais | 
| a+ | casa com a letra “a” uma vez ou mais | 
| Curingas | |
| . | casa com qualquer caracter uma vez | 
| .* | casa com qualquer caracter várias vezes | 
| (esse|aquele) | Casa as palavras 'esse' ou 'aquele' | 
1-Procura a palavra marcos no arquivo /etc/passwd:
grep marcos /et/passwd2-Procura todas as linhas começadas pela letra u no arquivo /etc/passwd:
grep '^u' /et/passwd3-Procura todas as linhas terminadas pela palavra false no arquivo /etc/passwd:
grep 'false$' /et/passwd4-Procura todas as linhas começadas pelas vogais no arquivo /etc/passwd:
grep '^[aeiou]' /et/passwd5-Procura todas as linhas começadas por qualquer caracter e segundo caracter seja qualquer vogal no arquivo /etc/passwd:
grep '^.[aeiou]' /et/passwd6-Procura todas as linhas que contenham uma sequência de 4 números consecutivos:
grep '[0-9][0-9][0-9][0-9]' /et/passwd7-Comando para encontrar linhas em branco:
grep '^$' /et/passwd8-Encontrar e contar linhas em branco:
grep '^$' /et/passwd | wc -l9-Encontrar mesmo nome, porém com letra inicial minúscula e maiúscula:
grep '[Mm]arcos' /et/passwd10-Encontrar 27 sequência^de 27 caracteres:
egrep '^.{27}$' passwdNote que foi usado o egrep e não o grep. É porque as chaves fazem parte de um conjunto avançado de Expressões Regulares (“extended”), então o egrep lida melhor com elas. Se fosse para usar o grep normal, teria que “escapar” as chaves
grep '^.\{27\}$' /etc/passwd11-Para procurar por linhas que tenham de 20 a 40 caracteres:
egrep '^.{20,40}$' /etc/passwd12-Para obter as linhas que possuem 40 caracteres ou mais:
egrep '^.{40,}$' /etc/passwd13-Econtrar números com 3 dígitos (de 0 a 9) ou mais:
egrep '[0123456789]{3,}' /etc/passwd14-Econtrar linhas que começam com ‘vogal minúscula’ e terminam com a palavra ‘bash’, usa−se o curinga “.*” para significar “qualquer coisa”(não confunda com “qualquer caracterer” somente “.”):
egrep '^[aeiou].*bash$' /etc/passwd15-Procura linhas que comecem com a palavra ‘eric’ ou ‘marcos’ ou ‘camila’:
egrep '^(eric|marcos|camila)' /etc/passwd16-Procura todas as linhas que NÃO comecem com a letra minúscula ‘m’
egrep '^[^marcos]' /etc/passwd#!/bin/bash
# Script com validações de Tel,E-mail,CEP,IP,Data...
####################### VALIDAR TELEFONE no formato: (99)9999-9999 ################################################
echo 'Informe o número de Telefone.Formato: (99)9999-9999';
read TELEFONE
echo $TELEFONE | egrep '^[(][0-9]{2}[)][0-9]{4}+-[0-9]{4}$' && echo -e '\033[01;32m Número válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse número.\033[0m'
######################### VALIDAR IP ##############################################
echo 'Informe o número de IP';
read IP
echo $IP | egrep '^[0-9]{1,3}[.]{1}[0-9]{1,3}[.]{1}[0-9]{1,3}[.]{1}[0-9]{1,3}$' && echo -e '\033[01;32m IP válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse IP.\033[0m'
######################### VALIDAR CEP ##############################################
echo 'Informe o CEP';
read CEP
echo $CEP | egrep '^[0-9]{5}[-][0-9]{3}$' && echo -e '\033[01;32m Número válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse número.\033[0m'
######################### VALIDAR DATA formato dd/mm/aaaa ##############################################
echo 'Informe a Data.Formato dd/mm/aaaa';
read DATA
echo $DATA | egrep '^[0-3]{1}[0-9]{1}[/][0-1]{1}[0-9]{1}[/][0-9]{4}$' && echo -e '\033[01;32m Data válida! \033[0m' || echo -e '\033[01;31m NÃO é válida essa Data.\033[0m'
######################### VALIDAR E-MAIL ##############################################
echo 'Informe o E-mail';
read EMAIL
echo $EMAIL | egrep '^([a-zA-Z0-9_-.])+@[0-9a-zA-Z.-]+\.[a-z]{2,3}$' && echo -e '\033[01;32m E-mail válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse E-mail.\033[0m'