Pessoalmente, meu favorito (requer bash e outras coisas que são padrão na maioria das distribuições Linux)
Os detalhes podem depender muito do que as duas coisas produzem e como você deseja mesclá-las ...
Conteúdo do comando1 e comando2 após o outro na saída:
cat <(command1) <(command2) > outputfile
Ou se ambos os comandos geram versões alternativas dos mesmos dados que você deseja ver lado a lado (usei isso com snmpwalk; números em um lado e nomes MIB no outro):
paste <(command1) <(command2) > outputfile
Ou se você quiser comparar a saída de dois comandos semelhantes (digamos, um encontro em dois diretórios diferentes)
diff <(command1) <(command2) > outputfile
Ou, se eles tiverem saídas ordenadas de algum tipo, mescle-as:
sort -m <(command1) <(command2) > outputfile
Ou execute os dois comandos ao mesmo tempo (pode embaralhar um pouco as coisas):
cat <(command1 & command2) > outputfile
O operador < () configura um canal nomeado (ou / dev / fd) para cada comando, canalizando a saída desse comando para o canal nomeado (ou / dev / fd filehandle reference) e passa o nome no linha de comando. Existe um equivalente com > (). Você poderia fazer: command0 | tee >(command1) >(command2) >(command3) | command4
para enviar simultaneamente a saída de um comando para 4 outros comandos, por exemplo.