If you take this code:
echo -e '\t\t\tString' | grep '^[\t]*String'
the result is blank because it doesn't match, yet this:
echo -e '\t\t\tString' | grep $'^[\t]*String'
works. I swear that I must have used the first line's code a hundred times in my scripts and in the terminal, without ever using the "$" character like that, and it's always seemed to work. Has there been some recent change? Why does it need the "$" character? Or am I doing something wrong?