I'm sure most of us know that when we want that some regex matches with a string at the begin of the line we must use "^" ...

But, I'm trying to understand what really means "empty string at the begin of the line"

I know that echo "Hello World" | grep ^H it matches

So please take a look the output of these commands:

```
[sergio@localhost ~]$ dd if=/dev/zero of=/tmp/texto  count=1 bs=1 2>/dev/null
[sergio@localhost ~]$ od -ta /tmp/texto          
0000000 nul
0000001

```

So far everything as expected, so:

```
[sergio@localhost ~]$ echo  "Hello" >> /tmp/texto
[sergio@localhost ~]$ grep -a "^Hello" /tmp/texto 

```

Well the first thing I must confess didn't expected, before of Hello there are a null character, so why is it not matching?

OK, let's use grep in perl style:

```
[sergio@localhost ~]$ grep -a -P "\x00Hello" /tmp/texto 
Hello

```

OK, It matches

But what I don't understand (perhap I have some misconcept) why grep -a "^Hello" does not match...

Could you help me?

thanks in advance!