有人可以解释/帮助我理解 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
^^
是什么赋予了?
提前致谢。
理查德