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