O problema é que sua saída designada do dd vai para STDERR
e não STDOUT
, então você também tem que redirecionar STDERR
e não apenas STDOUT
.
Para o bash e o zsh, você pode usar |&
em vez de |
, o que também redirecionará STDERR
a STDIN
do segundo comando, por exemplo:
dd if=/dev/urandom of=/dev/null bs=1K count=10000 |& awk '/copied/ {print $8 " " $9}'
A abordagem mais geral é redirecionar STDERR explicitamente com 2>&1
, por exemplo:
dd if=/dev/urandom of=/dev/null bs=1K count=10000 2>&1 | awk '/copied/ {print $8 " " $9}'
Para a parte em python, consulte o módulo do subprocesso e Popen
em particular.