I was under the impression that a caret symbol means "beginning of the line" with Extended POSIX regular expressions.
However, when I use it with
grep it behaves unexpectedly.
I am using GNU
grep 2.5.4 on Ubuntu 10.04 Lucid Lynx.
I echo out a line ' hello', then pipe it to a
grep that searches for "zero-or-more white-space characters followed by the letter h":
echo ' hello' | grep -E '[:space:]*h' hello
grep finds it ok.
If I add a caret to indicate that I only want the pattern to match "zero-or-more white-space characters followed by the letter h at the beginning of the string":
echo ' hello' | grep -E '^[:space:]*h'
No matches are found. I would expect the string to have matched because it begins with white-space followed by h.
Why does this caret symbol prevent a match?