Есть ли в bash какой-либо способ направить STDERR через фильтр, прежде чем объединять его с STDOUT? То есть я хочу
STDOUT ────────────────┐
├─────> terminal/file/whatever
STDERR ── [ filter ] ──┘
, а не
STDOUT ────┐
├────[ filter ]───> terminal/file/whatever
STDERR ────┘
Вот пример, созданный по образцу замены файловых дескрипторов в 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
Цитата из приведенной выше ссылки:
- Сначала сохраните стандартный вывод как &3 (&1 дублируется на 3)
- Затем отправьте стандартный вывод в стандартный вывод (&2 дублируется в 1)
- Отправьте стандартный вывод в &3 (стандартный вывод) ( &3 заменяется на 2)
- close &3 (&- заменяется на 3)