O problema é que você está usando redirecionamentos de shell para ler e gravar no mesmo arquivo. Verifique p
depois, estará vazio também. O shell o abre no modo de leitura, truncando o arquivo, enquanto ele está configurando o pipeline antes de executar os comandos. No entanto, usar tee
, já que ele abre o próprio arquivo, significa que o arquivo não será truncado até que o conteúdo seja lido para a entrada. Esse é um comportamento bem conhecido e documentado e o motivo pelo qual você não pode simplesmente usar redirecionamentos para fazer alterações em linha nos arquivos.