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 resultado das duas coisas e como você deseja mesclá-las ...
Conteúdo de command1 e command2 um após o outro na saída:
cat <(command1) <(command2) > outputfile
Ou se os dois comandos produzirem versões alternativas dos mesmos dados que você deseja ver lado a lado (eu usei isso com o snmpwalk; números de um lado e nomes MIB do outro):
paste <(command1) <(command2) > outputfile
Ou se você deseja comparar a saída de dois comandos semelhantes (digamos, encontrar em dois diretórios diferentes)
diff <(command1) <(command2) > outputfile
Ou, se houver algum tipo de saída ordenada, mescle-as:
sort -m <(command1) <(command2) > outputfile
Ou execute os dois comandos de uma só vez (no entanto, você pode embaralhar um pouco as coisas):
cat <(command1 & command2) > outputfile
O operador <() configura um pipe nomeado (ou / dev / fd) para cada comando, canalizando a saída desse comando no pipe nomeado (ou / dev / fd filehandle reference) e passa o nome na linha de comando. Existe um equivalente a> (). Você pode fazer: command0 | tee >(command1) >(command2) >(command3) | command4
enviar simultaneamente a saída de um comando para 4 outros comandos, por exemplo.