Intereting Posts
Аудит одновременного входа в систему AIX Как это могло случиться: безопасная загрузка моего UEFI, похоже, работает на Ubuntu, но не на Fedora или Debian? Определение частоты дискретизации на ALSA Вывести сообщение в графическом интерфейсе от cron Использование ~ / .dircolors в рыбной оболочке Ошибка «Недостаточно памяти» при копировании больших файлов с помощью pcmanfm Ловушка, ERR и повторение строки ошибки Как Solaris находит справочные страницы? Выйти из дискового пространства в разделе / ​​usr / ports, как я могу создавать порты? Какова взаимосвязь (сходство и различия) между / proc / devices и / dev в Linux? Почему некоторые окна не имеют минимумов в LXQT? Наличие nVidia OpenGL 32-битного драйвера на 64-битной системе Debian в многоархиве Могу ли я использовать разрешения или возможности для ограничения создания файлов в каталоге, не ограничивая создание каталогов? Fedora 16 ssh через интернет / домашнюю сеть. Тот же компьютер в порядке Где я могу найти готовые binutils и компиляторы для устаревших операционных систем?

В чем разница между \ b и \ <в команде grep

На странице man grep я вижу

 The symbols \< and \> respectively match the empty string at the beginning and end of a word. The symbol \b matches the empty string at the edge of a word. 

Но я все еще не могу понять разницу. Для меня \b является обозначением Perl для границы слова, а \< – обозначением Вима с той же целью.
PS: Английский не мой родной язык. Простите меня, если разница очевидна для вас.

\< соответствует началу слова
\> соответствует концу слова
\b соответствует обеим границам, если в конце или в начале

Важная особенность этих специальных символов заключается в том, что они соответствуют пустой строке, а не самой границе слова. граница слова является противоположностью набора символов, представленного \w эквивалентом [_[:alnum:]] (буква a на Z, цифры и _ ) в нотации Posix.

пример

Наконец, Грэм нашел очень интересный пример :

 $ echo 'acegi z' | grep -o '[acegi ]*\>' | cat -A acegi$ $ echo 'acegi z' | grep -o '[acegi ]*\b' | cat -A acegi $ 

В настоящее время этот пример показывает, что иногда полезно использовать конец слова вместо границы слова, потому что использование совпадающего символа пробела исключается путем сопоставления конца слова.
Поэтому в более полезном примере я бы сказал, что если вы хотите совместить символ без слова и конец этого не-слова, вы не можете использовать \> ; но, возможно, \b может использоваться в этом конкретном случае, потому что он будет соответствовать началу следующего слова.

До сих пор ни один пример не смог прийти мне на ум. Но, на мой взгляд, есть, вероятно, несколько вариантов использования, где это имеет смысл, но я предполагаю, что это только для удобства чтения. Потому что, когда вы ставите \b это неопределенно, но если вы точно начинаете или заканчиваете слово, тогда это дает лучшее понимание регулярного выражения лицам, которые его читают.