Não, a tubulação não cuida disso. O pipe não executa os dois comandos sequencialmente e armazena a saída do primeiro na memória. Os dois programas são executados ao mesmo tempo e são conectados usando um dispositivo de E / S especial chamado pipe. Mas antes de iniciar os programas, o shell configura todos os redirecionamentos de E / S, o que significa que ele abre o arquivo de saída e o trunca.
Se você tem o GNU awk, você pode usar o inplace
opção para substituir o arquivo de entrada.
gawk -i inplace -F'\.' -v OFS=. '{print $2, $1}' department.txt