Может кто-нибудь объяснить / помочь мне понять логику этой разницы между BSD grep и GNU grep? Я добавил вставки под спичками.
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ cat t1
admin:*:80:root
$ grep '\<.' t1
admin:*:80:root
^^^^^ ^^ ^^^^
против
$ grep --version
GNU grep 2.6.3
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ cat t1
admin:*:80:root
$ grep '\<.' t1
admin:*:80:root
^ ^ ^
Кажется, что GNU grep делает это правильно, а BSD grep — нет. Я думал, что \<
должен получить границу слова? Примечание grep '\<ad' t1
, похоже, дает одинаковый результат в обеих версиях, например:
$ cat t2
admin:*:80:root
sadmin:*:81:root
$ grep '\<ad' t2
admin:*:80:root
^^
Что дает?
Заранее спасибо.
Ричард