/doc/linux/mancl5/man1/grep.1.html
Página de Manual

GREP

Seção: User Commands (1)
1992 September 10
 

NOME

grep, egrep, fgrep - lista as linhas que combinem com um padrão  

SINOPSE

grep [-[AB] NUM] [-CEFGVbchiLlnqsvwxyUu] [-e PADRÃO | -f ARQUIVO] [--extended-regexp] [--fixed-strings] [--basic-regexp] [--regexp=PADRÃO] [--file=ARQUIVO] [--ignore-case] [--word-regexp] [--line-regexp] [--line-regexp] [--no-messages] [--revert-match] [--version] [--help] [--byte-offset] [--line-number] [--with-filename] [--no-filename] [--quiet] [--silent] [--files-without-match] [--files-with-matcces] [--count] [--before-context=NUM] [--after-context=NUM] [--context] [--binary] [--unix-byte-offsets] arquivos...  

DESCRIÇÃO

Grep pesquisa nos arquivos de entrada (ou na entrada padrão caso nenhum arquivo seja informado ou o nome do arquivos seja igual a - ), por linhas que contenham o padrão informado. Por padrão, grep lista as linhas coincidentes.

Há três variantes mais significativas do comando grep, controladas pelas seguintes opções.

-G, --basic-regexp
Interpreta padrão como uma expressão regular básica (veja abaixo). Este é o padrão.
-E, --extended-regexp
Interpreta padrão como uma expressão regular estendida (veja abaixo).
-F, --fixed-strings
Interpreta padrão como uma lista de expressões fixas, separadas por nova linha, que podem ser testadas em separado.

Adicionalmente, dois programas derivados egrep e fgrep estão disponíveis. Egrep é similar, mas não idêntico a grep -E, e é compatível com o comando Unix egrep. Fgrep é o mesmo que grep -F.

Todas as variantes de grep entendem as seguintes opções:

-NUM
Coincidências serão listadas com NUM linhas antes do início e ao final. Note que grep nunca imprimirá qualquer linha mais de uma vez.
-A NUM, --after-context=NUM
Listará NUM linhas após a linha onde foi localizada a expressão informada.
-B NUM, --before-context=NUM
Listará NUM linhas antes da linha onde foi localizada a expressão informada.
-C, --context
Equivalente a -2.
-V, --version
Lista a versão de grep na saída padrão de erros. Este número deve ser incluído em todas as informações de erro (veja abaixo).
-b, --byte-offset
Lista o deslocamento em byte da arquivo de entrada antes de listar qualquer linha de saída.
-c, --count
Suprime a saída normal; ao invés disso imprime um contador das linhas coincidentes para cada arquivo de entrada informado. Com a opção -v, --revert-match (vide abaixo), conta as linhas não coincidentes.
-e PADRÃO , --regexp=PADRÃO
Usa PADRÃO como o padrão a ser pesquisado; útil para buscar padrões começados com -.
-f ARQUIVO, --file=ARQUIVO
Obtém os padrões a partir de ARQUIVO, um por linha. Um arquivo vazio contém zero padrões, e logo não coincide com nada..
-h, --no-filename
Suprime o prefixo dos nomes de arquivos na saída quando múltiplos arquivos são pesquisados.
-i, --ignore-case
Ignora a distinção entre maiúsculas e minúsculas no padrão informado e nos arquivos de entrada.
-L, --files-without-match
Suprime a saída normal; em seu lugar imprime o nome de cada arquivo de entrada do qual nenhuma saída seria impressa normalmente. A pesquisa irá parar no primeiro padrão encontrado.
-l, --files-with-matches
Suprime a saída normal; em seu lugar imprime o nome de cada arquivo de entrada a partir do qual alguma saída seria impressa normalmente. A pesquisa irá parar no primeiro padrão encontrado.
-n, --line-number
Adiciona no início de cada linha encontrada o número da linha no arquivo de entrada.
-q, --quiet
Silencioso; suprime a saída normal. A pesquisa irá parar no primeiro arquivo encontrado. Veja também as opções -s e --no-messages
-s, --silent
Suprime as mensagens de erros sobre arquivos inexistentes ou que não podem ser lidos.
-v, --revert-match
Inverte o padrão de coincidência, selecionando as linhas que não contenham o padrão.
-w, --word-regexp
Seleciona somente as linhas que contenham somente coincidências de palavra inteira com o padrão. O teste é realizado através da coincidência da expressão no início da linha ou precedida por um caracter não construtor de expressões. Similarmente, ele pode estar no final da linha ou seguido de um caracter não construtor de expressões. Caracteres construtores são letras, dígitos e sublinhado.
-x, --line-regexp
Seleciona somente aquelas coincidências que formem uma linha completa do arquivo de entrada.
-y
Sinônimo obsoleto para -i.
-U, --binary
Trata os arquivos como binários. Por padrão sob MS-DOS e MS-Windows, grep tenta reconhecer o arquivo através da pesquisa dos primeiros 32 Kb lidos do arquivo. Se grep concluir que o arquivo é do tipo texto, ele retira caracteres de retorno de linha do arquivo original (para permitir que expressões com ^ e $ funcionem corretamente). A especificação de -U inibe esta checagem, fazendo com que os arquivos sejam lidos e passados para o mecanismo de verificação da forma como se encontrem; se o arquivo é um arquivo texto com os caracteres de retorno de linha e alimentação de linha (CR/LF) ao final da linha, esta opção poderá provocar alguns erros na checagem. Esta opção é suportada somente no sistemas MS-DOS e MS-Windows.
-u, --unix-byte-offsets
Lista o deslocamento em um byte com estilo Unix. Esta opção faz com que grep liste os bytes de deslocamento como se fossem arquivos texto no estilo Unix, ou seja sem os caracteres de retorno de linha. Produzirá um resultado idêntico a executar grep em uma máquina Unix. Esta opção não tem nenhum efeito a menos que a opção -b seja também usada; a qual é suportada somente em MS-DOS e MS-Windows.
 

EXPRESSÕES REGULARES

Uma expressão regular é um modelo que descreve um conjunto de expressões. Expressões regulares são construídas de forma similar à expressões aritméticas, usando vários operadores para combinar expressões menores.

Grep entende dois tipos básicos de sintaxe de expressões regulares: ``básica'' e ``estendida.'' No GNU grep, não há diferença em funcionalidades disponíveis usando uma ou outra sintaxe. Em outras implementações, expressões regulares básicas são menos poderosas. A descrição a seguir aplica-se a expressões regulares estendidas; eventuais diferenças com expressões regulares básicas são resumidas logo após.

Os blocos fundamentais de construção de expressões regulares são os que verificam a coincidência de somente um caracter. Muitos caracteres, incluindo-se letras e dígitos, são expressões regulares que coincidem com elas mesmas. Qualquer meta-caracter com algum significado especial deve estar citado através da precedência de uma barra reversa.

Uma lista de caracteres entre colchetes - [ e ] coincide com qualquer caracter simples da lista; caso o primeiro caracter da lista seja um sinal circunflexo ^ então os caracteres selecionados serão todos aqueles que não coincidam com a lista. Por exemplo, a expressão regular [0123456789] coincide com qualquer dígito. Uma faixa de caracteres ASCII pode ser especificada através da informação do primeiro e último caracteres, separados por um hífen. Finalmente, certas classes têm denominação própria pré definida. São elas: [:alnum:]-alfa-numérica, [:alpha:]-alfabética, [:cntrl:]-controle, [:digit:]-dígitos, [:graph:]-gráficos, [:lower:]-minúsculas, [:print:]-impressão, [:punct:]-pontuação, [:space:]-espaços, [:upper:]-maiúsculas, e [:xdigit:]. For exemplo, [[:alnum:]] significa [0-9A-Za-z], exceto na última forma que é dependente da codificação de caracteres ASCII, as formas descritas são portáveis. (note que os colchetes nestas classe são parte do nome simbólico, e devem ser incluídas em adição aos colchetes que delimitam a lista). Muitos metacaracteres perdem o seu significado especial dentro das listas. Para incluir um literal ] coloque-o no início da lista. Similarmente, para incluir um literal ^ coloque-o em qualquer lugar, menos no início da lista, e finalmente para incluir um literal - coloque-o ao final.

O ponto . combina com qualquer caracter simples. O símbolo \w é um sinônimo para [[:alnum:]] e \W é um sinônimo para [^[:alnum]].

O acento circunflexo ^ e o sinal monetário $ são metacaracteres que combinam respectivamente com um espaço vazio no início e no final da linha. Os símbolos \< e \> combinam respectivamente com vazio no início e no final da palavra. O símbolo \b combina com vazio na frente da palavra, e \B combina com vazio que não esteja no início da palavra.

Uma expressão regular pode ser seguida de um ou mais caracteres de repetição:

?
O item precedente é opcional e deve coincidir no máximo uma vez.
*
O item precedente deverá coincidir zero ou mais vezes.
+
O item precedente deverá coincidir uma ou mais vezes.
{n}
O item precedente deverá coincidir exatamente n vezes.
{n,}
O item precedente deverá coincidir n ou mais vezes.
{,m}
O item precedente é opcional e deverá coincidir no mínimo m vezes.
{n,m}
O item precedente deve coincidir no mínimo n vezes, mas não mais que m vezes.

Duas expressões regulares podem ser concatenadas; a expressão resultante coincide com qualquer cadeia de caracteres formada pela concatenação das cadeias que respectivamente coincidem com as sub-expressões.

Duas expressões regulares podem ser unidas através do operador |; a expressão regular resultante coincide com qualquer cadeia que confira com uma ou outra sub-expressão.

Repetições têm precedência sobre a concatenação, a qual por sua vez tem precedência sobre alternações. Uma sub-expressão completa pode estar entre parênteses para sobrepor-se às regras de precedência.

A referência reversa \n, onde n é um dígito único, coincide com a cadeia de caracteres previamente selecionada nésima entre parênteses e pertencente a uma expressão regular.

Em expressões regulares básicas os metacaracteres ?, +, {, |, (, e ) perdem seu significado especial; ao invés disso use as versões com barra invertida \?, \+, \{, \|, \(, e \).

Em egrep , o meta-caracter { perde o seu significado especial; ao invés disso use \{.  

DIAGNÓSTICOS

Normalmente, o status de finalização é 0 se coincidências foram encontradas, e 1 se nenhuma foi encontrada ( a opção -v inverte o sentido do status de saída). Status igual a 2 significa que há erros de sintaxe no padrão, arquivos de entrada inacessíveis ou outros erros de sistema.  

PROBLEMAS

Envie um mail com a descrição de eventuais erros para bug-gnu-utils@gnu.org. Esteja seguro de incluir a palavra ``grep'' em algum ligar do campo ``Assunto:''.

Grandes repetições de contadores na construção de {m,n} pode provocar o uso de muita memória por grep. Adicionalmente certas expressões regulares obscuras podem requerer tempo e espaço, e podem causar falta de memória no uso de grep

Referências reversas são muito lentas e podem requerer um grande tempo para serem executadas.  

TRADUÇÃO E REVISÃO PARA A LÍNGUA PORTUGUESA

Sandro Nunes Henrique <sandro@conectiva.com.br> (tradução) Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br> (revisão)


 

Index

NOME
SINOPSE
DESCRIÇÃO
EXPRESSÕES REGULARES
DIAGNÓSTICOS
PROBLEMAS
TRADUÇÃO E REVISÃO PARA A LÍNGUA PORTUGUESA

Este documento foi criado pelo man2html, usando páginas de manual. Posteriormente foram traduzidos alguns detalhes.
Tempo: 19:46:50 GMT, Maio 30, 2001