Estou brincando um pouco com meus próprios registros de e-mail. Experimente
grep 'to=<emailaddress' /var/log/maillog | cut -d ' ' -f 6 | grep -f - /var/log/maillog
O -f -
lerá a lista de strings para procurar por stdin.
Estou tentando pesquisar uma string desconhecida (Message ID) em um log com base em uma string conhecida (endereço do destinatário) e, em seguida, grep a string desconhecida para gerar todas as informações de log relevantes. Eu sou capaz de usar grep e cortar a saída da (s) cadeia (s) desconhecida (s), mas a partir daí eu estou perplexa em passar isso para grep. Eu usei um pipe para xargs grep e isso não está produzindo a saída que estou procurando. Aqui está o comando que estou usando para grep e cut:
grep 'to=<emailaddress' /var/log/maillog | cut -d ' ' -f 6
Isso produz a saída de todas as strings desconhecidas para mensagens processadas pelo Postfix para o endereço de email. Quando eu pipe para xargs eu recebo "grep:: No tal arquivo ou diretório:
grep 'to=<emailaddress' /var/log/maillog | cut -d ' ' -f 6 | xargs grep /var/log/maillog
Obrigado pela sua ajuda.
Eu escrevi um script perl que permite que você faça qualquer informação do log que você quiser e imprimirá todas as linhas com o mesmo id de fila (com uma passagem através do arquivo e sem limitação de tamanho de arquivo):