The OpenNET Project / Index page

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

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

"Помогите с GREP"  +/
Сообщение от SeraV (ok) on 22-Июл-10, 11:00 
Доброе время суток.
Проблема такая: есть база большая порядка 800 таблиц почти каждая таблица до 150м, база начала переодически падать, написал скриптец

passwd_root_mysql='123'
mysql_cmd='/usr/bin/mysqlcheck'
mysql_='/usr/bin/mysql'
name_base='base'
$mysql_cmd -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base}

интервал запуска 5 минут, но есть одно большое но, даный скрипт шарит всю базу, мне етого не нужно так как у меня каждый день создается своя таблица например "o2010х22x7" "r2010х22x7" "q2010х22x7" и таких таблиц много
мне нужно чтобы мой скрипт проверял только текущие таблицы + основные
написал вот так

echo show tables | ${mysql_} -u root --password=${passwd_root_mysql} ${name_base} | \
  grep -v '^[оrq]2' | \
  xargs $mysql_cmd -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base} $1

но теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"

подскажите что нужно дописать  

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

Оглавление

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


1. "Помогите с GREP"  +/
Сообщение от ДорогойДрук on 22-Июл-10, 12:11 
>  grep -v '^[оrq]2' | \
>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"

А разве нужно писать не так?

grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'

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

2. "Помогите с GREP"  +/
Сообщение от аноним on 22-Июл-10, 13:45 
>>  grep -v '^[оrq]2' | \
>>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"
>
>А разве нужно писать не так?
>
>grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'

можно и так (perl-like regexp, нужно проверить, доступна ли такая опция):

grep -eP '^[orq]2\w+'

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

6. "Помогите с GREP"  +/
Сообщение от DogEater (ok) on 22-Июл-10, 22:40 
>>  grep -v '^[оrq]2' | \
>>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"
>
>А разве нужно писать не так?
>
>grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'

а разве этот шаблон будет работать без опции -e ?

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

3. "Помогите с GREP"  +/
Сообщение от SeraV (ok) on 22-Июл-10, 17:54 
наверное я неправельно написал.
например есть таблицы: "o2010х18x7" "o2010х19x7" "o2010х20x7" "o2010х21x7" "o2010х22x7" "r2010х18x7" "r2010х19x7" "r2010х20x7" "r2010х21x7" "r2010х22x7" "q2010х18x7" "q2010х19x7" "q2010х20x7" "q2010х21x7" "q2010х22x7" + еще с разними названиями, нужно чтобы проверились те что с разными названиями и "o2010х22x7" "r2010х22x7" "q2010х22x7" а остальные ненужны, даная команда   grep -v '^[оrq]2' отсекает все таблицы которые начинаются на "о2" "r2" "q2" , а если еще дописать grep 'o2010х22x7' | grep 'r2010х22x7' | grep 'q2010х22x7' вообще перестает работать

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

4. "Помогите с GREP"  +/
Сообщение от ДорогойДрук on 22-Июл-10, 22:22 
В консольке знак | не означает ИЛИ
Вы таки не проверили предложенный вариант.

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

5. "Помогите с GREP"  +/
Сообщение от DogEater (ok) on 22-Июл-10, 22:35 
>наверное я неправельно написал.
>например есть таблицы: "o2010х18x7" "o2010х19x7" "o2010х20x7" "o2010х21x7" "o2010х22x7" "r2010х18x7" "r2010х19x7" "r2010х20x7" "r2010х21x7"
>"r2010х22x7" "q2010х18x7" "q2010х19x7" "q2010х20x7" "q2010х21x7" "q2010х22x7" + еще с разними названиями,
>нужно чтобы проверились те что с разными названиями и "o2010х22x7" "r2010х22x7"
>"q2010х22x7" а остальные ненужны, даная команда   grep -v '^[оrq]2'
>отсекает все таблицы которые начинаются на "о2" "r2" "q2" , а
>если еще дописать grep 'o2010х22x7' | grep 'r2010х22x7' | grep 'q2010х22x7'
>вообще перестает работать

всё правильно, потому что любой шаблон из дописанного совпадает с тем что ты использовал в grep -v


вот тебе простейший рабочий вариант:
grep -e "[orq]2010.*x7"

точнее так:
grep -P "[orq]2010x\d{2}x7"
но с pcre меня отчего то grep послал нах, видимо это от жары, ну да ладно, тебе и первого хватит

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

7. "Помогите с GREP"  +/
Сообщение от SeraV (ok) on 22-Июл-10, 23:12 
разобрался кому интересно вот пример

#!/bin/sh
passwd_root_mysql='123'
mysql_cmd='/usr/bin/mysql'
mysqlcheck_cmd='/usr/bin/mysqlcheck'
name_base='base'

d_y=`date "+%Y"`
d_m="`date +%m | sed 's%^0%%'`"
d_d="`date +%d | sed 's%^0%%'`"
tbl=${d_y}x${d_m}x${d_d}
echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} ${name_base} | \
  grep -v '^[orq]2' | grep -v '^Tables' | \
  xargs ${mysqlcheck_cmd} -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base} $1 o${tbl} r${tbl} q${tbl}

Всем спасибо
вопрос закрыт

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

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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