^
corresponde ao início de uma string. Por exemplo:
echo "A string with A" | grep ^A
corresponde apenas a strings que começam com A
. Observe como o segundo A não é correspondido, pois não está no início da string.
echo "Some string with A" | grep ^A
^A
não corresponde a nada porque a string não inicia com A
.
Da mesma forma, $
corresponde ao fim de uma string:
echo "A good string" | grep g$
g$
corresponde apenas ao g no final da string.
echo "A string in which g is not the end" | grep g$
não retorna nada porque não termina em g
.
Como muru apontou em os comentários ^
e $
não correspondem às primeiras e últimas linhas nas expressões regulares, embora isso possa ser verdade em outras plataformas / programas.