Назад | Перейти на главную страницу

Префикс стандартного вывода перед передачей команды по конвейеру

В Linux (Debian), как я могу префикс стандартного вывода команды с помощью одной или нескольких строк, прежде чем передать его второй команде?

Это для отправки вывода команды с помощью sendmail следующим образом:

pflogsumm <args> | sendmail <address>

Я не могу указать таким образом строку темы, поскольку sendmail извлекает поля заголовка из вводимых данных. Таким образом, я хочу добавить префикс к выводу pflogsumm с помощью sed.

Спасибо.

/ Дэвид

Вы можете использовать подоболочку. Вы можете отправить вывод из чего угодно, и все это будет проходить через конвейер.

(cat /foo ; echo bar ; pflogsumm <args> ) | sendmail <address>

awk буду делать то, что ты хочешь.

Например

# 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

Приведенный выше префикс строки printf перед вашим выводом.

Ваш пример был бы

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