Como uso o subprocess.Popen para conectar vários processos por pipes?

Como executo o seguinte comando shell usando o Pythonsubprocess módulo?

echo "input data" | awk -f script.awk | sort > outfile.txt

Os dados de entrada virão de uma string, então eu realmente não precisoecho. Eu cheguei até aqui, alguém pode explicar como eu faço issosort também?

p_awk = subprocess.Popen(["awk","-f","script.awk"],
                          stdin=subprocess.PIPE,
                          stdout=file("outfile.txt", "w"))
p_awk.communicate( "input data" )

ATUALIZAR: Observe que, embora a resposta aceita abaixo não atenda à pergunta, a S.Lott está certa e é melhor evitar resolver esse problema em primeiro lugar!