Isso ocorre porque o operador de redirecionamento >
é chamado antes de qualquer comando e, assim, o seguinte acontece nesta ordem:
-
p.py
está aberto para escrita, truncando o que estava lá antes -
sed
é chamado para executar comandos emp.py
, que agora está vazio - A saída (que não é nada) é gravada em
p.py
(portanto, ela ainda não contém nada)
Você tem duas opções dependendo de quão portátil você quer que seu código seja:
não portátil
Use a opção GNU sed -i
para fazer uma edição no local
portátil
redireciona a saída para um arquivo temporário e, em seguida, move o arquivo temporário sobre o original após a conclusão de sed