Comando grep do Linux
Agrep é uma versão do utilitário grep que também corresponde aos padrões aproximados .
Descrição
concorda aceita os nomes dos arquivos de entrada (a entrada padrão é o padrão) para registros contendo cadeias que correspondem exatamente ou aproximadamente a um padrão .
Um registro é, por padrão, uma única linha, mas pode ser definido de maneira diferente usando a opção -d (veja abaixo). Normalmente, cada registro encontrado é copiado para a saída padrão. A correspondência aproximada permite localizar registros que contêm o padrão com vários erros, incluindo substituições , inserções e exclusões .
Por exemplo, “Massechusets” corresponde a “Massachusetts” com dois erros (uma substituição e uma inserção ). A execução de approc -2 Massechusets foo gera todas as linhas no arquivo foo contendo qualquer sequência com (no máximo) 2 erros de “Massechusets”.
O acceptp suporta muitos tipos de consultas, incluindo curingas arbitrários, conjuntos de padrões e, em geral, todas as expressões regulares . Ele suporta a maioria das opções suportadas pela família grep e várias outras (mas não é 100% compatível com grep ).
Assim como o restante da família grep , os caracteres $ , ^ , ∗ , [ , ] , ^ , | , ( , ) ,! , e \ podem causar resultados inesperados quando incluídos no padrão, pois esses caracteres especiais também são significativos para o shell . Para evitar esses problemas, deve-se sempre colocar todo o argumento do padrão entre aspas simples, ou seja, ‘padrão’ . Não use aspas duplas ( “ ).
Quando o consentimento é aplicado a mais de um arquivo de entrada, o nome do arquivo é exibido no início de cada linha que corresponde ao padrão. (O nome do arquivo não é exibido durante o processamento de um único arquivo, mas, nesse caso, se o usuário deseja que o nome apareça, ele deve usar / dev / null como um segundo arquivo na lista e, em seguida, o nome do arquivo será exibido )
Sintaxe
concorda [- # cdehiklnpstvwxBDGIS] padrão [-f patternfile ] [ nome do arquivo ...]
Opções
– # | # É um não-negativo inteiro (no máximo 8), que especifica o número máximo de erros permitidos em encontrar os jogos aproximados. O padrão é zero . Geralmente, cada inserção, exclusão ou substituição conta como um erro. É possível ajustar o custo relativo de inserções, exclusões e substituições; consulte -I -D e -S opções. |
-c | Exibe apenas a contagem (número de ocorrências) dos registros correspondentes. |
-d ‘delim’ | Defina delim para ser o separador entre dois registros. O valor padrão é ‘ $ ‘, que corresponde ao final de uma linha; portanto, por padrão, um registro é uma única linha. O delim pode ser uma sequência de até oito caracteres (com o possível uso de ^ e $ ).
O texto entre dois delim ‘s, antes do primeiro delim e depois do último delim é considerado como um registro. Por exemplo, -d ‘$$’ define parágrafos como registros (se um parágrafo é representado por duas novas linhas) e -d ‘^ From’ define mensagens de email como registros. agrep corresponde cada registro separadamente. Essa opção funciona com expressões regulares, mas o próprio delim não pode ser uma expressão regular. |
-e padrão | O mesmo que fornecer um argumento simples de padrão, mas usar -e é útil quando o padrão começa com um ‘ – ‘. |
-f patternfile | Combine os padrões no arquivo de padrão . A saída é todas as linhas que correspondem a pelo menos um dos padrões no arquivo de padrão .
Atualmente, a opção -f funciona apenas para correspondência exata e para padrões simples (qualquer símbolo meta é interpretado como um caractere regular). É compatível apenas com as opções -c , -h , -i , -l , -s , -v , -w e -x . |
-h | Não exiba nomes de arquivos. |
-Eu | Pesquisa que não diferencia maiúsculas de minúsculas; por exemplo, ” A ” e ” a ” são considerados equivalentes. |
-k | Use a correspondência simples de padrões, ou seja, não trate símbolos no padrão como um meta caractere.
Por exemplo, concorda -k ‘a (b | c) * d’ foo encontrará as ocorrências da cadeia literal “a (b | c) * d” em foo , enquanto concorda ‘a (b | c) * d’ foo encontrará substrings em foo que correspondem à expressão regular ‘a (b | c) * d’ . |
-eu | Listar apenas os nomes dos arquivos que contêm uma correspondência. Por exemplo, concorda -l ‘maravilhoso’ * listará os nomes desses arquivos no diretório atual que contêm a palavra maravilhoso . |
-n | Cada linha impressa é prefixada por seu número de registro no arquivo. |
-p | Encontre registros no texto que contenham uma superssequência do padrão. Por exemplo, concorda que -p DCS foo corresponderá ao ” Departamento de Ciência da Computação “. |
-s | Trabalhe silenciosamente; isto é, não exibe nada, exceto mensagens de erro. |
-t | Envie o registro começando do final do delim para (e incluindo) o próximo delim . Isso é útil para casos em que o delim deve aparecer no final do registro. |
-v | Modo inverso – exibe apenas os registros que não contêm o padrão. |
-W | Procure o padrão apenas como uma palavra – ou seja, apenas corresponda aos padrões se eles estiverem cercados por caracteres não alfanuméricos , como um espaço ou um traço. O não alfanumérico deve cercar a correspondência; eles não podem ser contados como erros. Por exemplo, concordar -w -1 carro corresponderá a ” carros “, mas não a ” caracteres “. |
-x | O padrão deve corresponder à linha inteira. |
-y | Usado com a opção -B . Quando Y estiver ligado, agrep será sempre produzir os melhores jogos sem dar um aviso. |
-B | Melhor modo de correspondência. Quando -B for especificado e nenhuma correspondência exata for encontrada, o consentimento continuará a procurar até que sejam encontradas as correspondências mais próximas (ou seja, aquelas com número mínimo de erros); nesse momento, a seguinte mensagem será exibida: ” a melhor correspondência contém x erros, existem y correspondências, produza-os? (s / n) “.
O melhor modo de correspondência não é suportado para entrada padrão, por exemplo, entrada de pipeline . Quando as opções – # , -c ou -l são especificadas, a opção -B é ignorada. Em geral, -B pode ser mais lento que – # , mas não muito. |
-D k | Defina o custo de uma exclusão como k ( k é um número inteiro positivo). Esta opção atualmente não funciona com expressões regulares. |
-G | Saída dos arquivos que contêm uma correspondência. |
-I k | Defina o custo de uma inserção como k ( k é um número inteiro positivo). Esta opção atualmente não funciona com expressões regulares. |
-S k | Defina o custo de uma substituição como k ( k é um número inteiro positivo). Esta opção atualmente não funciona com expressões regulares. |
Padrões
O apprent suporta uma grande variedade de padrões, incluindo cadeias simples, cadeias de caracteres com classes de caracteres, conjuntos de cadeias de caracteres, curingas e expressões regulares.
Cordas
Uma sequência é qualquer sequência de caracteres, incluindo os símbolos especiais ^ para o início da linha e $ para o final da linha. Os caracteres especiais listados acima ( $ , ^ , ∗ , [ , ^ , | , ( , ) ,! E \ ) devem ser precedidos por \ para que correspondam como caracteres regulares. Por exemplo, \ ^ abc \\ corresponde à string “^ abc \”, enquanto ^ abc corresponde à string “abc” no início de uma linha.
Classes de caracteres
Uma classe de caracteres é uma lista de caracteres dentro de ” [] ” (em ordem) corresponde a qualquer caractere da lista, onde um traço representa o intervalo entre dois caracteres. Por exemplo, [a-ho-z] é qualquer caractere entre a e h ou entre o e z . O símbolo ^ inside [] indica quais caracteres não correspondem (“complementa” a lista). Por exemplo, [^ in] indica qualquer caractere, exceto os caracteres de i a n . O símbolo ^ tem, portanto, dois significados, mas isso é consistente com o egrep. O símbolo significa qualquer caractere, exceto o caractere de nova linha.
Operações booleanas
concorda aceita uma operação AND ‘ ; ‘e uma operação OR ‘ , ‘, mas não uma combinação de ambos. Por exemplo, rápido; a rede pesquisa todos os registros que contêm “rápido” e “rede”.
Curingas
O símbolo ‘ # ‘ é usado para indicar um curinga. # corresponde a zero ou qualquer número de caracteres arbitrários. Por exemplo, ex # e corresponde a “exemplo”. O símbolo # é equivalente a . * No egrep. De fato ,. * Funcionará também, porque é uma expressão regular válida, mas, a menos que isso faça parte de uma expressão regular real, # funcionará mais rápido.
Combinação de correspondência exata e aproximada
qualquer padrão entre colchetes angulares <> deve corresponder exatamente ao texto, mesmo que a correspondência esteja com erros. Por exemplo, <mathemat> ics corresponde matemático a um erro (substituindo os últimos s por um a ), mas mathe <matics> não corresponde matemático, não importa quantos erros permitimos.
Expressões regulares
A sintaxe das expressões regulares no concord é geralmente a mesma que no egrep . A operação sindical ‘ | ‘, Kleene encerramento’ * ‘e parênteses () são todos suportados. Atualmente ‘ + ‘ não é suportado. Atualmente, as expressões regulares estão limitadas a aproximadamente 30 caracteres (excluindo meta caracteres). Algumas opções ( -d , -w , -f , -t , -x , -D , -I , -S ) atualmente não funcionam com expressões regulares. O número máximo de erros para expressões regulares que usam ‘ * ‘ ou ‘ | ‘é 4.
Exemplos
concorda -2 -c ABCDEFG foo
Fornece o número de linhas no arquivo foo que contêm ” ABCDEFG ” em dois erros.
concorda -1 -D2 -S2 'ABCD # YZ' foo
Emite as linhas que contêm ” ABCD ” seguidas dentro de uma distância arbitrária por ” YZ “, com até uma inserção adicional ( -D2 e -S2 tornam as exclusões e substituições muito “caras”).
concorda -5 -p abcdefghij / caminho / para / dicionário / palavras
Gera a lista de todas as palavras do dicionário localizadas em / path / to / dictionary / words contendo pelo menos 5 das 10 primeiras letras do alfabeto em ordem.
concorda -1 'abc [0-9] (de | fg) * [xz]' foo
Gera as linhas que contêm, com até um erro, a sequência que começa com ” abc ” seguida de um dígito, seguida de zero ou mais repetições de ” de ” ou ” fg “, seguidas de ” x “, ” y ” ou ” z “.
concordp -d '^ From' 'quebra; internet' mbox
Produz todas as mensagens de correio (o padrão ” ^ De ” separa as mensagens em um arquivo de mensagens) que contêm as palavras-chave ” quebra ” e ” internet “.
concorda -d '$$' -1 '<word1> <word2>' foo
Localiza todos os parágrafos que contêm a palavra1 seguida pela palavra2 com um erro no lugar do espaço em branco. Em particular, se a palavra1 for a última palavra em uma linha e a palavra2 for a primeira palavra na próxima linha, o espaço será substituído por um símbolo de nova linha e corresponderá. Portanto, essa é uma maneira de superar a separação por uma nova linha. Observe que -d ‘$$’ (ou outro delim que abranja mais de uma linha) é necessário, porque, caso contrário, concorda em pesquisar apenas uma linha por vez.
Comandos relacionados
grep – Filtra o texto que corresponde a uma expressão regular.