What are the main differences among them? And in which typical scenarios is it better to use each language?
First, there are two unrelated things in the list "Perl, Python awk and sed".
Thing 1 - simplistic text manipulation tools.

sed.  It has a fixed, relatively simple scope of work defined by the idea of reading and examining each line of a file.  sed is not designed to be particularly readable.  It is designed to be very small and very efficient on very tiny unix servers.
awk.  It has a slightly less fixed, less simple scope of work.  However, the main loop of an awk program is defined by the implicit reading of lines of a source file. 

These are not "complete" programming languages.  While you can -- with some work -- write fairly sophisticated programs in awk, it rapidly gets complicated and difficult to read.
Thing 2 - general-purposes programming languages.  These have a rich variety of statement types, numerous built-in data structures, and no wired-in assumptions or shortcuts to speak of.

Perl.
Python. 

When to use them.

sed.  Never.  It really doesn't have any value in the modern era of computers with more than 32K of memory.  Perl or Python do the same things more clearly.
awk.  Never.  Like sed, it reflects an earlier era of computing.  Rather than maintain this language (in addition to all the other required for a successful system), it's more pleasant to simply do everything in one pleasant language.
Perl.  Any programming problem of any kind.  If you like free-thinking syntax, where there are many, many ways to do the same thing, perl is fun.
Python.   Any programming problem of any kind.  If you like fairly limited syntax, where there are fewer choices, less subtlety, and (perhaps) more clarity.  Python's object-oriented nature makes it more suitable for large, complex problems.

Background -- I'm not bashing sed and awk out of ignorance.  I learned awk over 20 years ago.  Did many things with it; used to teach it as a core unix skill.  I learned Perl about 15 years ago.  Did many sophisticated things with it.  I've left both behind because I can do the same things in Python -- and it is simpler and more clear.
There are two serious problems with sed and awk, neither of which are their age.

The incompleteness of their implementation. Everything sed and awk do can be done in Python or Perl, often more simply and sometimes faster, too.  A shell pipeline has some performance advantages because of its multi-processing.   Python offers a subprocess module to allow me to recover those advantages.
The need to learn yet another language.  By doing things in Python (or Perl) your implementation depends on fewer languages, with a resulting increase in clarity.
What are the differences between Perl, Python, AWK and sed?