10.2-RELEASE/amd64: grep regex syntax vs. grep-bug
Chad J. Milios
milios at ccsys.com
Mon Sep 28 13:12:29 UTC 2015
On 9/28/2015 7:37 AM, no at spam@mgEDV.net wrote:
> hi folks,
> the goal: grep, that a variable contains a number and JUST digits.
> # setup sample variable - we're on /bin/sh @ 10.2-RELEASE/amd64.
> # od output the content of the variable to ensure content
> echo "$x" | od -ctdC
> 0000000 \n
> # now try /usr/bin/grep'pin (C locale) that it contains...
> # ^ at BOL...
> # [0-9] require a digit
> # * ... and digits following
> # $ ...until we reach EOL
> # ... but...:
> echo "$x" | grep -c '^[0-9]*$'
> 1 <== WHY?
> it works if i remove the *, but this would only work for 1digit nrs.
> is this a grep bug or my false understanding of how '*' works?
you want to use + (1 or more) instead of * (0 or more) and for that
youll need to add -E mode to grep as well
More information about the freebsd-questions