Ответы:
Как описано здесь , например, это соответствует между словами:
Есть три разных положения, которые квалифицируются как границы слов:
- Перед первым символом в строке, если первый символ является символом слова.
- После последнего символа в строке, если последний символ является символом слова.
- Между двумя символами в строке, где один является символом слова, а другой не является символом слова.
Вот примеры каждого из этих случаев:
Для строки foobarпервый случай соответствует
foobar
^-----here
Для строки foobarвторой случай соответствует
foobar
^--here
Для строки foo barтретий случай будет соответствовать
foo bar
^--here, because space is not a word character
То, что считается символом слова, зависит от конкретной реализации регулярного выражения. Однако во всех случаях буквы ( [a-z]и [A-Z]), цифры ( [0-9]) и _считаются символами слова.
Итак, пример регулярного выражения, который вы разместили ( \b[A-Z]+\b), означает, что вы найдете самую длинную строку, которая находится между двумя границами слова и состоит только из заглавных букв. Это может быть проще объяснить на примере:
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(ни /usr/xpg4/bin/egrep) не относится к \bэтому способу. Например, echo "FOOBAR" | egrep '\b[A-Z]+\b'не будет соответствовать.
egrep '\b[A-Z]+\b' filename.sh
Давайте разберемся:
[A-Z]представляет любой символ в классе символов
[ABCDEFGHIJKLMNOPQRSTUVWXYZ].[A-Z]+представляет одно или несколько вхождений символов верхнего регистра. Пример матчи будут: A, HELLO, IS, I, ELEPHANTи т.д.'\bINDIA\b': точно так же, как поиск по всему слову INDIAв верхнем регистре. Было бы НЕ совпадать INDIANA. Таким образом, применяя тот же принцип - '\b[A-Z]+\b'будет искать целые слова, имеющие одну или несколько букв в верхнем регистре.egrep '\b[A-Z]+\b' filename.shбудет искать слова, имеющие одну или несколько букв в верхнем регистре в файле - filename.sh.\b - точно так же, как поиск по всему слову.
[azA-Z0-9_]. Посмотрите в руководствеegrep(1), возможно, пояснение к используемым регулярным выражениям.