Honestly, I think the best way to learn these tools is to use them. After starting at BNR in 1990, I sat for a couple of days with Sobell's Practical UNIX on my lap, doing every example and every exercise; since them, I've stayed at the command line as much as possible. I've looked periodically for other, more recent resources, at least in part to answer questions such as yours, but I've never found anything that packed the punch of that early Sobell, not even later Sobell's.
If you want to direct the learning, though, I'd recommend figuring out how to do something with grep, e.g., then do the same with sed, awk, cut, etc.
For example:
grep myuserid /etc/passwd
sed -n '/myuserid/p' /etc/passwd
awk '/myuserid/ { print }
etc.
Then make it more interesting: repeat those with 'grep -I MYUSERID /etc/passwd'.
Then make it even more interesting: print the 4th field from each matching line. (Hint: man cut.) Come up with at least two or three different ways of doing this with regex's, then make those regex's as compact as possible.
Then make it a lot more interesting: print the two lines before and the three lines after each pattern.
Once you do this for a while, you will get used to thinking in terms of filters and regex and things will start to come more naturally for you.
Also consider doing all of those exercises from within vim, use :g... commands (or any other alternative you can think of).