Цель
Чтобы внести изменения в stderr и stdout, но сохранить исходный порядок печати.
Решения
Тот, с которого я начал и на который чаще всего ссылаются, следующий.
Код: Выделить всё
command > >(sed 's/.../.../')
2> >(sed 's/.../.../' >&2)
Из двух веток, упомянутых выше, есть какие-то трубные решения.
Код: Выделить всё
{ { "$@" | sed 's/.../.../' >&3; } 2>&1 \
| sed 's/.../.../' >&2; } 3>&1
Код: Выделить всё
fnc() {
echo "This is GOOD text"
echo "This is ERROR text" >&2
echo "This is GOOD text"
echo "This is ERROR text" >&2
echo "This is GOOD text"
echo "This is ERROR text" >&2
}
echo "Running test"
{ { fnc | sed 's/\(.*\)/ \1/' >&3; } 2>&1 \
| sed 's/\(.*\)/ \1/' >&2; } 3>&1
Код: Выделить всё
Running test
This is GOOD text
This is GOOD text
This is GOOD text
This is ERROR text
This is ERROR text
This is ERROR text
Подробнее здесь: https://stackoverflow.com/questions/783 ... ronization
Мобильная версия