Eu tenho pesquisado muito isso, mas ainda não estou claro. O que significa limite de palavras? O que isso faz?
Então, por exemplo, alguém poderia me explicar esse comando, por favor?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
user36683
fonte
fonte
[azA-Z0-9_]
. Verifique o manualegrep(1)
, talvez a duplicação para as expressões regulares em uso.Respostas:
Conforme descrito aqui , por exemplo, ele combina entre palavras:
Aqui estão exemplos de cada um desses casos:
Para a sequência
foobar
, o primeiro caso correspondePara a sequência
foobar
, o segundo caso correspondePara a sequência
foo bar
, o terceiro caso corresponderáO que se qualifica como um caractere de palavra depende da implementação específica da expressão regular. Em todos os casos, no entanto, letras (
[a-z]
e[A-Z]
), números ([0-9]
) e_
são considerados caracteres de palavras.Portanto, o exemplo de regex que você postou (
\b[A-Z]+\b
) significa encontrar a string mais longa entre dois limites de palavras e que consiste apenas em letras maiúsculas. Pode ser mais fácil explicar por exemplo:fonte
egrep
(nem/usr/xpg4/bin/egrep
) não trata\b
dessa maneira. Por exemplo,echo "FOOBAR" | egrep '\b[A-Z]+\b'
não corresponderia.Vamos terminar:
[A-Z]
representa qualquer caractere na classe de caracteres[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.[A-Z]+
representa uma ou mais ocorrências de caracteres maiúsculos. Partidas exemplo seria:A
,HELLO
,IS
,I
,ELEPHANT
, etc.'\bINDIA\b'
: é exatamente como uma pesquisa de palavraINDIA
inteira em maiúsculas. Seria não corresponderINDIANA
. Assim, aplicar o mesmo princípio -'\b[A-Z]+\b'
procuraria palavras inteiras com uma ou mais letras maiúsculas.egrep '\b[A-Z]+\b' filename.sh
, procuraria por palavras com uma ou mais letras todas em maiúsculas no arquivo -filename.sh
.\b
- é exatamente como uma pesquisa de palavras inteira.fonte