Только труба STDERR через фильтр

Есть ли в bash какой-либо способ направить STDERR через фильтр, прежде чем объединять его с STDOUT? То есть я хочу

STDOUT ────────────────┐
                       ├─────> terminal/file/whatever
STDERR ── [ filter ] ──┘

, а не

STDOUT ────┐
           ├────[ filter ]───> terminal/file/whatever
STDERR ────┘
70
задан wizulus 7 January 2019 в 22:11
поделиться

1 ответ

Вот пример, созданный по образцу замены файловых дескрипторов в bash . Вывод a.out выглядит следующим образом без префикса STDXXX: .

STDERR: stderr output
STDOUT: more regular

./a.out 3>&1 1>&2 2>&3 3>&- | sed 's/e/E/g'
more regular
stdErr output

Цитата из приведенной выше ссылки:

  1. Сначала сохраните стандартный вывод как &3 (&1 дублируется на 3)
  2. Затем отправьте стандартный вывод в стандартный вывод (&2 дублируется в 1)
  3. Отправьте стандартный вывод в &3 (стандартный вывод) ( &3 заменяется на 2)
  4. close &3 (&- заменяется на 3)
61
ответ дан 24 November 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: