Este é o histórico da linha de comando do curso de Expressões Regulares que ministrei no III SDSL em Lajeado - RS.
As Expressões Regulares são uma simbologia, um método de se descrever padrões de texto complicados ou posicionais, como "números no final da linha" ou "palavras repetidas na mesma linha".
$ grep root /etc/passwd
$ cat /etc/passwd | grep root
$ cat /etc/passwd | grep ^root # root no início
$ cat /etc/passwd | grep bash$ # bash no fim
$ cat /etc/passwd | grep ^$ # linhas em branco
$ cat /etc/passwd | grep adm
$ cat /etc/passwd | grep Adm
$ cat /etc/passwd | grep '[Aa]dm' # Adm ou adm
$ cat /etc/passwd | grep '[aeiou]' # vogais
$ cat /etc/passwd | grep '^[aeiou]' # vogais no início
$ cat /etc/passwd | grep '^[aeiouAEIOU]' # vogais minú/MAIÚ
$ cat /etc/passwd | grep '^.[aeiou]' # vogal na segunda
$ cat /etc/passwd | grep '^..[aeiou]' # vogal na terceira
$ cat /etc/passwd | grep '^....[aeiou]' # vogal na sexta
$ cat /etc/passwd | grep '^.\{10\}[aeiou]' # vogal na 10a
$ cat /etc/passwd | egrep '^.{10}[aeiou]'' # vogal na 10a (egrep)
$ cat /etc/passwd | egrep '[aeiou][aeiou][aeiou][aeiou]'
$ cat /etc/passwd | egrep '[aeiou]{4}' # repetindo listas
$ cat /etc/passwd | egrep '^.{1,4}[aeiou]' # de 1 a 4
$ cat /etc/passwd | egrep '^.{0,4}[aeiou]' # de 0 a 4
$ cat /etc/passwd | egrep '^.{4,}[aeiou]' # no mínimo 4
$ echo áéíóú | grep [a-z] # casa, sistema pt_BR
$ LANG= LC_ALL= ; echo áéíóú | grep [a-z] # não casa, sistema en
$ cat /etc/passwd | egrep '^[a-z]' # começa com letras
$ cat /etc/passwd | egrep '^[aeiou]' # começa com vogais
$ cat /etc/passwd | egrep '^[b-df-hj-np-tv-z]' # começa com consoantes
$ cat /etc/passwd | egrep '^[^aeiou]' # começa com não vogal
$ cat txt | egrep '^a{0,1}$' # a 0 ou 1 vez
$ cat txt | egrep '^a?$' # a 0 ou 1 vez
$ cat txt | egrep '^a{0,}$' # a 0 ou mais vezes
$ cat txt | egrep '^a*$' # a 0 ou mais vezes
$ cat txt | egrep '^aa{1,}$' # a 1 ou mais vezes
$ cat txt | egrep '^a+$' # a 1 ou mais vezes
$ echo abc | grep a.*bc # .* casa nada
$ echo a------bc | grep a.*bc # .* casa -------
$ echo "um negrito <b>aqui</b> e <i>aqui</i>" | sed 's/<.*>//g'
$ echo "um negrito <b>aqui</b> e <i>aqui</i>" | sed 's/<[^>]*>//g'
$ cat /etc/passwd | egrep '^(root|adm|ftp)'
$ cat /etc/passwd | egrep '^(root|adm|ftp):'
$ # (supermercado|hipermercado|mercado|minimercado)
$ # (super|hiper|mini)?mercado
$ # (quero)-\1
$ cat numeros.txt | egrep '([0-9])\1\1' # casa 444, 555, 777
$ cat txt | egrep '([a-z]+) \1' # espaço entre palavras
$ cat txt | egrep ' ([a-z]+) \1' # espaço antes
$ cat txt | egrep '(^| )([a-z]+) \2' # espaço ou início
$ cat txt | egrep '(^| )([a-z]+) \2( |$)' # espaço ou final
$ cat txt | egrep '(^| )([a-z]+) \2([ .]|$)' # espaço ou ponto ou final
$ cat txt | egrep '\<([a-z]+) \1\>' # usando borda de palavra
$ cat txt | egrep '\b([a-z]+) \1\b' # com \b também funciona
$ seq 260 > numeros2.txt
$ cat numeros2.txt | egrep '[0-9]{1,3}'
$ cat numeros2.txt | egrep '^[0-9]{1,3}$'
$ cat numeros2.txt | egrep '^[0-9]{1,2}$'
$ cat numeros2.txt | egrep '^([0-9]{1,2}|1[0-9][0-9])$'
$ cat numeros2.txt | egrep '^([0-9]{1,2}|1[0-9][0-9]|2[0-5][0-5])$'
$ cat numeros2.txt | egrep '^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9])$'
$ cat numeros2.txt | egrep '^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
$ cat ips | egrep '^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.\1\.\1\.\1$'
$ cat ips | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.|$)){4}$'
$ cat ips | sed 's/$/./' | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){4}$'
$ ### usando uma variável
$ NUM='([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
$ cat ips | egrep "^($NUM\.){3}($NUM)$"
$ ### o monstro expandido
$ cat ips | egrep "^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$"
$ cat ips | egrep "\<(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>"