Não há um método geral para isso. Os filtros estão apenas lendo e gravando fluxos, eles não estão modificando o fluxo no lugar, e a relação entre eles é totalmente arbitrária e dependente da ferramenta em particular. Portanto, não há como um mecanismo de propósito geral saber que algo foi "removido" da entrada e, portanto, salvá-lo para ser copiado para a saída.
Mas ferramentas como awk
e perl
podem gravar em arquivos arbitrários sozinhos, para que possam fazer isso com código explícito:
awk '/regexp/ { print } !/regexp/ { print > "non-matching.txt" }' > matching.txt