Comando grep: Buscando em Texto - Linux
O comando grep
grep [OPÇÕES] PADRÕES [ARQUIVO]
O argumento obrigatório PADRÕES
ARQUIVO
OPÇÕES
Por exemplo, vamos encontrar o texto "127.0." no arquivo /etc/hosts
programicio@Programicio:~$ grep "127.0." /etc/hosts 127.0.0.1 localhost 127.0.1.1 Programicio
Outro exemplo é encontrar pastas e arquivos no diretório pessoal do usuário, cujos nomes começam com "Do":
programicio@Programicio:~$ ls ~ | grep "Do" Documents Downloads
Principais Elementos das Expressões Regulares:
: indica que a correspondência com o padrão deve estar no início da linha. Por exemplo, vamos encontrar linhas que começam com o símbolo "s":^
programicio@Programicio:~$ ls ~ | grep "^s" shell snap
: indica que a correspondência com o padrão deve estar no final da linha. Por exemplo, vamos encontrar todos os arquivos com a extensão "txt":$
ls ~ | grep "\.txt$"
: corresponde a qualquer caractere. Por exemplo, no diretório pessoal do usuário, se tivermos o arquivo test.txt com o seguinte conteúdo:.
Tom Bob Sam Alice Kate Tim Tomas
Vamos encontrar todas as linhas que contêm "Tim" ou "Tom":
programicio@Programicio:~$ grep "T.m" test.txt Tom Tim Tomas
: indica caracteres em uma expressão regular que devem ser interpretados como alternativas. Por exemplo, vamos encontrar todas as linhas que contêm "Tim" ou "Tom":[]
grep "T[oi]m" test.txt
: indica que a correspondência com o padrão não deve conter os caracteres dentro dos colchetes. Por exemplo, vamos encontrar todas as linhas que não contêm "Tim" ou "Tom":[^ ]
grep "T[^oi]m" test.txt
: define um intervalo de caracteres que o caractere deve corresponder. Por exemplo, vamos encontrar todas as linhas que começam com um caractere numérico:-
grep "^0-9" test.txt
: permite escapar caracteres especiais. Por exemplo, o ponto\
é considerado um caractere curinga. No entanto, se precisamos especificar que o texto deve conter exatamente um ponto, devemos usar.
. Por exemplo, vamos encontrar na pasta de downloads todos os arquivos com a extensão tar.gz:\.
ls ~/Downloads | grep "\.tar\.gz"
: indica que a expressão regular anterior pode ocorrer uma ou mais vezes, ou pode não ocorrer.*
: indica que a expressão regular anterior pode ocorrer uma vez ou pode estar ausente.?
: indica que a expressão regular anterior pode ocorrer uma ou mais vezes.+
: indica que o caractere anterior pode ocorrer no mínimo n vezes. Por exemplo, vamos encontrar linhas onde há duas letras "o" consecutivas:{n}
grep "o\{2\}" test.txt