Respostas:
Conforme descrito aqui , por exemplo, ele combina entre palavras:
Existem três posições diferentes que se qualificam como limites de palavras:
- Antes do primeiro caractere na sequência, se o primeiro caractere for um caractere de palavra.
- Após o último caractere na sequência, se o último caractere for um caractere de palavra.
- Entre dois caracteres na sequência, em que um é um caractere de palavra e o outro não é um caractere de palavra.
Aqui estão exemplos de cada um desses casos:
Para a sequência foobar, o primeiro caso corresponde
foobar
^-----here
Para a sequência foobar, o segundo caso corresponde
foobar
^--here
Para a sequência foo bar, o terceiro caso corresponderá
foo bar
^--here, because space is not a word character
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:
echo "FOOBAR" | egrep '\b[A-Z]+\b' # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b' # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b' # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars
egrep(nem /usr/xpg4/bin/egrep) não trata \bdessa maneira. Por exemplo, echo "FOOBAR" | egrep '\b[A-Z]+\b'não corresponderia.
egrep '\b[A-Z]+\b' filename.sh
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 palavra INDIAinteira em maiúsculas. Seria não corresponder INDIANA. 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.
[azA-Z0-9_]. Verifique o manualegrep(1), talvez a duplicação para as expressões regulares em uso.