ed is a very simple line-oriented text editor. While amazingly primitive by modern standards, it is useful to know for use in emergencies, as it is sometimes the only editor available in single-user mode; it also has some uses for automated/scripted editing tasks.
sed (for stream editor) uses ed-like commands but unlike ed processes files a line (or sometimes some number of lines) at a time instead of reading an entire file into memory and editing it there, so it can handle much larger input and be used in a pipeline, making it more suitable for many automated editing tasks.
awk is a complete programming language (smaller and more elegant than perl, in my opinion, if not as comprehensive) oriented around text processing. By default awk breaks input lines into whitespace-delimited fields available as $1, $2, etc. (much like shell command-line arguments), and conditionally applies actions written with a C-like syntax to input lines matching specified criteria (such as fields matching certain values or regular expressions). It also has facilities for basic numeric computation.