Я много исследовал это, но мне все еще не ясно это. Что означает слово граница ? Что оно делает?
Так, например, может кто-нибудь объяснить мне эту команду, пожалуйста?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
user36683
источник
источник
[azA-Z0-9_]
. Посмотрите в руководствеegrep(1)
, возможно, пояснение к используемым регулярным выражениям.Ответы:
Как описано здесь , например, это соответствует между словами:
Вот примеры каждого из этих случаев:
Для строки
foobar
первый случай соответствуетДля строки
foobar
второй случай соответствуетДля строки
foo bar
третий случай будет соответствоватьТо, что считается символом слова, зависит от конкретной реализации регулярного выражения. Однако во всех случаях буквы (
[a-z]
и[A-Z]
), цифры ([0-9]
) и_
считаются символами слова.Итак, пример регулярного выражения, который вы разместили (
\b[A-Z]+\b
), означает, что вы найдете самую длинную строку, которая находится между двумя границами слова и состоит только из заглавных букв. Это может быть проще объяснить на примере:источник
egrep
(ни/usr/xpg4/bin/egrep
) не относится к\b
этому способу. Например,echo "FOOBAR" | egrep '\b[A-Z]+\b'
не будет соответствовать.Давайте разберемся:
[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
- точно так же, как поиск по всему слову.источник