Logic behind word-boundary difference between BSD grep and GNU grep -
can please explain/help me understand logic behind difference between bsd grep , gnu grep? i've added carets below matches.
$ grep --version grep (bsd grep) 2.5.1-freebsd $ cat t1 admin:*:80:root $ grep '\<.' t1 admin:*:80:root ^^^^^ ^^ ^^^^
versus
$ 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> free software: free change , redistribute it. there no warranty, extent permitted law. $ cat t1 admin:*:80:root $ grep '\<.' t1 admin:*:80:root ^ ^ ^
it seems gnu grep getting right , bsd grep isn't. thought \<
supposed word boundary? note grep '\<ad' t1
seems same result in both versions, e.g.:
$ cat t2 admin:*:80:root sadmin:*:81:root $ grep '\<ad' t2 admin:*:80:root ^^
what gives?
thanks in advance.
richard
using \>
specify word boundary wouldn't work bsd grep
. try [[:<:]]
instead.
this post gives pretty useful information on word boundaries various utilities.
Comments
Post a Comment