Although sed and awk are similar they do have different purposes.
Sed is a stream editor mainly used to change change a field. For example:
sed -e 's/oldstuff/newstuff/g' inputFileName > outputFileName
would change all occurences of oldstuff to newstuff in inputFileName, and redirect the output to outputFileName.
Awk is more usualy used to format fields. For example:
awk '/regex/ { print x }; { x=$0 }'
This would search for occurences of /regex/ and print the line FOLLOWING it.
This is not hard and fast though as there is some overlap between the two.
sadly, not true. sed is a stream editor to manipulate and change text. All it ever does is using regular expression. Plus some buffers to hold data. that's about it. It lacks abilities to count (at least easily), or lacks arrays, and other programming constructs. While, awk on the other hand, does the job of sed more easily and more intuitively. it can also replace text as easily as using sed. In the end, they actually do not have different purposes in terms of text/file processing.
sed 's/old/new' file
same as
awk '{sub("old","new")}1' file
Now, take a csv file that is comma separated and say i want to find the value of the 3rd field. Its more easily done with awk than with sed. eg
awk
awk -F"," '{print $3}' csvfile
sed
sed 's/\(.[^,]*\),\(.[^,]*\),\(.[^,]*\)\(.*\)/\3/' csvfile
You can learn both sed and awk, but frankly, for all your text/file processing + programming needs, just learn awk will do.