The OpenNET Project / Index page

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

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

"Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 13:18 
Никак не могу понять как  сделать такое:
есть список
12261 ?        S  0:00 ora_q001_123
12985 ?        S 60:50 ora_j002_123
13821 ?        S  1:16 ora_j003_123
13930 ?        S  0:12 ora_j004_123
17656 ?        S  0:00 ora_reco_321
17658 ?        S  0:02 ora_cjq0_321
17660 ?        S 13:59 ora_arc0_321
17662 ?        S 46:27 ora_arc1_321
23943 ?        S  0:10 ora_psp0_213
23945 ?        S  0:00 ora_mman_213
23947 ?        S  4:30 ora_dbw0_213
23949 ?        S  2:13 ora_lgwr_213
как мне сделать выборку с выводом списка вида:
sid
123
321
213

и без повторов
Спасибо

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

Оглавление

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


1. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 13:40 
>sid

это кто такой?

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

2. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 13:41 
>>sid
>
>это кто такой?

это oracle_sid
написал для примера он может быть как буквенный так и цифровой


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

4. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 13:50 
>это oracle_sid

мне это ни о чем не говорит :)
щас парсинг и унификацию числовых строк напишу.

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

12. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 16:26 
>>sid
>
>это кто такой?

#include <string>
#include <vector>
#include <set>
#include <algorithm>
#include <iterator>
#include <fstream>
#include <iostream>

#include <cerrno>
#include <cstring>

std::vector<std::string> parse(const std::vector<std::string>& slist) {
    std::set<std::string> unique_strings;
    std::vector<std::string>::const_iterator it = slist.begin();

    for ( ; it != slist.end(); ++it ) {
        std::string::size_type pos = it->rfind('_');
        if ( pos == std::string::npos ) continue;
        unique_strings.insert(it->substr(pos+1));
    }

    return std::vector<std::string>(unique_strings.begin(), unique_strings.end());
}

int main(int argc, char** argv) {
    if ( argc != 2 ) {
        std::cerr << "expected file name!" << std::endl;
        return 0;
    }

    std::ifstream file(argv[1]);
    if ( !file ) {
        std::cerr << "can`t open file: " << strerror(errno) << std::endl;
        return errno;
    }

    std::vector<std::string> in;
    while ( !file.eof() ) {
        std::string tmp;
        std::getline(file, tmp);
        in.push_back(tmp);
    }

    std::vector<std::string> out = parse(in);

    std::copy(out.begin(), out.end(), (std::ostream_iterator<std::string>(std::cout, "\n")));

    return 0;
}

ищет первый подчерк с конца строки. унифицирует числа.

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

13. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 16:40 

>ищет первый подчерк с конца строки. унифицирует числа.

это спасибо я и сам мог написать но на СИ мне не нужно(((
только шел чтоб человек т.е. начальник мог понимать что там написанно
на СИ он не рубец(

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

15. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 16:57 
>
>>ищет первый подчерк с конца строки. унифицирует числа.
>
>это спасибо я и сам мог написать но на СИ мне не
>нужно(((
>только шел чтоб человек т.е. начальник мог понимать что там написанно
>на СИ он не рубец(

это с++ ;)

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

14. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 16:42 
тем более ваш код не будет откомпелированн без напильника по крайне мере в solaris)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 16:59 
>тем более ваш код не будет откомпелированн без напильника по крайне мере
>в solaris)

вам знакомо слово "стандарт" ? так вот у с++ есть стандарт обязывающий всех производителей с++ компиляторов соблюдать его. а солярис его хорошо соблюдает ;)

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

17. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 17:20 
>>тем более ваш код не будет откомпелированн без напильника по крайне мере
>>в solaris)
>
>вам знакомо слово "стандарт" ? так вот у с++ есть стандарт обязывающий
>всех производителей с++ компиляторов соблюдать его. а солярис его хорошо соблюдает
>;)

с этим я с вами полностью согласен
--enable-languages=c++ я не добавлял!
мне нужно было на shell или bash
я это добился вроде)))

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

18. "Сделать выборку"  +/
Сообщение от niXman (ok) on 10-Дек-09, 17:47 
>[оверквотинг удален]
>>>в solaris)
>>
>>вам знакомо слово "стандарт" ? так вот у с++ есть стандарт обязывающий
>>всех производителей с++ компиляторов соблюдать его. а солярис его хорошо соблюдает
>>;)
>
>с этим я с вами полностью согласен
>--enable-languages=c++ я не добавлял!
>мне нужно было на shell или bash
>я это добился вроде)))

Все равно спасибо :)

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

19. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 18:00 
>[оверквотинг удален]
>>>вам знакомо слово "стандарт" ? так вот у с++ есть стандарт обязывающий
>>>всех производителей с++ компиляторов соблюдать его. а солярис его хорошо соблюдает
>>>;)
>>
>>с этим я с вами полностью согласен
>>--enable-languages=c++ я не добавлял!
>>мне нужно было на shell или bash
>>я это добился вроде)))
>
>Все равно спасибо :)

тебе спасибо за старания) удачного вечера

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

3. "Сделать выборку"  +/
Сообщение от Slavaz (ok) on 10-Дек-09, 13:50 
... | sed -r 's/.*\s*ora_.*_(\d*)/\1/' | sort | uniq
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 13:52 
>... | sed -r 's/.*\s*ora_.*_(\d*)/\1/' | sort | uniq

в solaris нет параметра -r ( я так пробовал

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

6. "Сделать выборку"  +/
Сообщение от Slavaz (ok) on 10-Дек-09, 13:58 
>>... | sed -r 's/.*\s*ora_.*_(\d*)/\1/' | sort | uniq
>
>в solaris нет параметра -r ( я так пробовал

В Солярке есть маны? :)

... | sed  's/.*_\(\d*\)/\1/' | sort | uniq

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

7. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 14:01 
>>>... | sed -r 's/.*\s*ora_.*_(\d*)/\1/' | sort | uniq
>>
>>в solaris нет параметра -r ( я так пробовал
>
>В Солярке есть маны? :)
>
>... | sed  's/.*_\(\d*\)/\1/' | sort | uniq

да но увы(
$ cat e.sh
cat /tmp/stat|sed 's/.*\s*ora_.*_(\d*)/\1/'| sort | uniq
$ ./e.sh
sed: command garbled: s/.*\s*ora_.*_(\d*)/\1/

--

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

8. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 14:09 
>[оверквотинг удален]
>>
>>... | sed  's/.*_\(\d*\)/\1/' | sort | uniq
>
>да но увы(
>$ cat e.sh
>cat /tmp/stat|sed 's/.*\s*ora_.*_(\d*)/\1/'| sort | uniq
>$ ./e.sh
>sed: command garbled: s/.*\s*ora_.*_(\d*)/\1/
>
>--

да тут разобрался спасибо работает
НО есть всегда
в выборке могут присутствовать записи вида 123_new
данный пример выведет только new(

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

9. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 14:24 
и возможно ли каждый параметр в выборке присваивать в переменную например $s
для дальнейшей манипуляции ими
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 14:45 
>и возможно ли каждый параметр в выборке присваивать в переменную например $s
>
>для дальнейшей манипуляции ими

/usr/ucb/ps -ax|grep ora_|sed 's/.*_\(\d*\)/\1/'|sort -u
пока что так

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

11. "Сделать выборку"  +/
Сообщение от rahc email(ok) on 10-Дек-09, 16:08 
вобщем вот выкладываю на всеобщее обозрение что у меня получилось
идея была просто нужна была возможность просмотреть на сервере Работающие на данный момент ORACLE_SID на сервере могут появляться новые базы и также исчезать(для тестов)
и чтоб быть в курсе всех событий было задуманно сделать следующее:
комманда stat и status

$ cat stat
#!/bin/bash
#i=`echo SID   ............   Status `
#echo $i
/usr/ucb/ps -ax|grep ora_ |sed 's/.*_\(\D*\)/\status \1/'|sort -u >/tmp/stats
chmod +x /tmp/stats
cat /tmp/stats
/tmp/stats >/tmp/Rep
rm /tmp/stats
i=`echo SID   ............   Status `
echo $i
cat /tmp/Rep|grep OPEN
cat /tmp/Rep|grep MOUNTED
rm /tmp/Rep

$ cat status
#!/bin/bash
#
#IBSO

if [ $# -eq 0 ]; then
echo "Status ORACLE_SID Graber";
date
else

sqlplus /nolog <<EOF
conn sys/sys@$1 as sysdba;
select host_name, instance_name, status from gv\$instance;
exit;
EOF
fi

Вот такие пироги если есть чем дополнить подсказывайте.
Понимаю что сделанно на коленке но главное цель достигнута!

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

20. "Сделать выборку"  +/
Сообщение от аноним on 10-Дек-09, 21:15 
>как мне сделать выборку с выводом списка вида:
>sid
>123
>321
>213

В данном случае

| sed 's|.*_||' | sort -u

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

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

Индекс форумов | Темы | Пред. тема | След. тема




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

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