\s should match whitespace but does not: FreeBSD 11.0-CURRENT from Sep. 21 joule% echo 'a b' | /usr/bin/grep -E '^a\sb' joule% joule% /usr/bin/grep --version grep (GNU grep) 2.5.1-FreeBSD GNU grep package works: joule% echo 'a b' | /usr/local/bin/grep -E '^a\sb' a b joule% /usr/local/bin/grep --version /usr/local/bin/grep (GNU grep) 2.20 BSD grep works: echo 'a b' | /usr/bin/bsdgrep -E '^a\sb' joule% /usr/bin/bsdgrep --version bsdgrep (BSD grep) 2.5.1-FreeBSD BSD grep and base GNU grep both link against /usr/lib/libgnuregex.so.5
A commit references this bug: Author: kevans Date: Tue Dec 8 14:05:27 UTC 2020 New revision: 368439 URL: https://svnweb.freebsd.org/changeset/base/368439 Log: src.opts.mk: switch to bsdgrep as /usr/bin/grep This has been years in the making, and we all knew it was bound to happen some day. Switch to the BSDL grep implementation now that it's been a little more thoroughly tested and theoretically supports all of the extensions that gnugrep in base had with our libregex(3). Folks shouldn't really notice much from this update; bsdgrep is slower than gnugrep, but this is currently the price to pay for fewer bugs. Those dissatisfied with the speed of grep and in need of a faster implementation should check out what textproc/ripgrep and textproc/the_silver_searcher can do for them. I have some WIP to make bsdgrep faster, but do not consider it a blocker when compared to the pros of switching now (aforementioned bugs, licensing). PR: 228798 (exp-run) PR: 128645, 156704, 166842, 166862, 180937, 193835, 201650 PR: 232565, 242308, 246000, 251081, 191086, 194397 Relnotes: yes, please Changes: head/share/mk/src.opts.mk