Имеется следующая строка в скрипте:oodump -id "$a"-3-2-1 ~/dbase/dbof1.boot | sed -n '/Obj.*\p' | awk -F= '{print ($2)}'
в этой строке делается дамп объекта в базе данных, после чего ведется поиск нужных строк с последующим выводом.
Проблема: вместе с искомой информацией выводятся сообщения об ошибках в базе данных (вероятно после строки "oodump -id "$a"-3-2-1"), причем нужные данные выводятся сразу же за сообщениями об ошибках:
Database error id2002.... ' Сообщение об ошибке базы данных
Database error id2003.... ' Сообщение об ошибке базы данных
Database error id2004.... ' Сообщение об ошибке базы данных
offset10 ' Нужные данные
offset20 ' Нужные данные
offset30 ' Нужные данныеКак перенаправить ошибки куда-нибудь (например /dev/null), чтобы нужные данные были отдельно от ошибок?
Пытался поставить 2>/dev/null в разных местах строки. Может нужно делать как-то по-другому? Подскажите, пожалуйста.
Сделайте oodump -id "$a"-3-2-1 ~/dbase/dbof1.boot 2>/dev/null и посмотрите исчезнут ли сообщения об ошибках. Если да, то они действительно выводятся во второй канал и их можно так отсеять, если нет, то можно сказать много "лестных" слов об авторах oodump и воспользоваться grep -v '^Database error id' для отбрасывания строк с сообщением об ошибке. Резюмируя:oodump -id "$a"-3-2-1 ~/dbase/dbof1.boot 2>/dev/null| sed -n '/Obj.*\p' | awk -F= '{print ($2)}'
или
oodump -id "$a"-3-2-1 ~/dbase/dbof1.boot |grep -v '^Database error id'| sed -n '/Obj.*\p' | awk -F= '{print ($2)}'
Спасибо за совет. oodump действительно не перенаправляет ошибки на второй канал. Пришлось фильтровать сообщения.
Попутно столкнулся с проблемой. Имеется дамп базы данных:DB Name = mas100
DB ID = 1
DB Read only = False
...........
DB Name = EnvDB150
DB ID = 84
DB Read only = False
..........Как вывести DB ID из этого дампа, не выводя DB ID, для которых DB Name = Env* ?
>[оверквотинг удален]
>DB ID = 1
>DB Read only = False
> ...........
>DB Name = EnvDB150
>DB ID = 84
>DB Read only = False
> ..........
>
>Как вывести DB ID из этого дампа, не выводя DB ID, для
>которых DB Name = Env* ?типа,
...|gawk '$1!="DB"{next}$2=="Name"{y=($4!~/^Env/);next}$2=="ID"&&y{print $4}'
? $-)
>типа,
>...|gawk '$1!="DB"{next}$2=="Name"{y=($4!~/^Env/);next}$2=="ID"&&y{print $4}'
>? $-)Spasibo!