The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Перенаправление вывода"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Перенаправление вывода"  
Сообщение от agalin on 30-Май-08, 00:49 
Имеется следующая строка в скрипте:

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 в разных местах строки. Может нужно делать как-то по-другому? Подскажите, пожалуйста.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перенаправление вывода"  
Сообщение от angra (ok) on 30-Май-08, 01:09 
Сделайте 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)}'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Перенаправление вывода"  
Сообщение от agalin on 30-Май-08, 16:40 
Спасибо за совет. 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* ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Перенаправление вывода"  
Сообщение от Andrey Mitrofanov on 30-Май-08, 17:07 
>[оверквотинг удален]
>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}'
? $-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Перенаправление вывода"  
Сообщение от agalin on 09-Июн-08, 12:39 
>типа,
>...|gawk '$1!="DB"{next}$2=="Name"{y=($4!~/^Env/);next}$2=="ID"&&y{print $4}'
>? $-)

Spasibo!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру