Prefixo a saída padrão antes de enviar um comando para um comando

2

No Linux (Debian), como posso prefixar a saída padrão de um comando com uma ou várias linhas antes de direcioná-lo para um segundo comando?

Isto é para enviar a saída de um comando usando sendmail assim:

pflogsumm <args> | sendmail <address>

Eu não posso especificar uma linha de assunto desta forma, já que o sendmail extrai os campos de cabeçalho da entrada que é alimentada. Eu quero, portanto, prefixar a saída pflogsumm usando sed.

Obrigado.

/ David

    
por OG Dude 28.02.2012 / 17:34

2 respostas

4

Você pode usar um subshell. Você pode enviar a saída de qualquer coisa que você quiser, e tudo sairá pelo pipe.

(cat /foo ; echo bar ; pflogsumm <args> ) | sendmail <address>
    
por 28.02.2012 / 18:35
1

o awk fará o que você quiser.

Por exemplo

# ps | awk ' { if (NR == 1) printf("Line 1\nLine 2\n"); print; }'
Line 1
Line 2
  PID TTY          TIME CMD
23071 pts/0    00:00:00 bash
25655 pts/0    00:00:00 ps
25656 pts/0    00:00:00 awk

Os prefixos acima preenchem a string printf antes de sua saída.

Seu exemplo seria

pflogsumm <args> | awk ' { if (NR == 1) printf("Line 1\nLine 2\n"); print; }' | sendmail <address>
    
por 28.02.2012 / 17:56