Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.12.2011, 11:07
|
|||
|---|---|---|---|
|
|||
работа с cat и cut |
|||
|
#18+
есть строчка в bash файле: Код: plaintext 1. $1 - переменная с путем к обрабатываемому файлу cat отбирает строчки в логах БД в которых содержится данный класс(CommonsQueryLoggingListener), который содержит сведения об обрабатываемых запросах. вся остальная часть обрабатывает не все строчки верно. А часть обрезает. например в изначальном файле(в самом файле это единая строка): Код: plaintext 1. 2. 3. 4. а выводит: Код: plaintext 1. а вот на примере какая строка нормально обрабатывается: Код: plaintext 1. 2. выводит: Код: plaintext 1. я так понимаю, что внутри первого запроса есть квадратные скобки, изза чего проблемы. как можно избежать этого, чтобы они не учитывались? чтобы в одной строке брались тока самые внешние скобки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 13:12
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
lubava1991, бедняга. как только ты замечаешь что раздумываешь над тонкостями обработки шелл более 15 минут, надо бросить и переписать на приличном языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 13:26
|
|||
|---|---|---|---|
|
|||
работа с cat и cut |
|||
|
#18+
мне просто дали этот скрипт. Я никогда ранее не сталкивалась с таким, обычно тока с sql работаю. как можно переписать и на какой язык? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 13:51
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
Что за криворукие говнокодеры пошли, что пишут свое говно творение с привязкой к определенной системе. Все запросы должны динамически генерироваться и средствами самого движка. Ту непонятно какой язык, БД и движок (если он еще есть). Однозначного ответа тут можно не дождаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 14:20
|
|||
|---|---|---|---|
|
|||
работа с cat и cut |
|||
|
#18+
нее))) скрипт этот отрабатывает логи от db2. чтобы в дальнейшем определить сколько времени каждый запрос выполнялся. этой частью от просто выбирает сами запросы, а далее(в части что не выложила сюда) сравниваются с исходным файлом и выводят время выполнения перед запросами. мне надо пока что, чтобы запросы на выводе были полными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 14:38
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
lubava1991, если это собственный инструментарий DBA - да хоть на паскале пишите. readln/writeln разве можно забыть? я бы попробовал преобразовать этот лог в формат mysql slow log, а тот уже анализировать с помощью mysqlsla. данные по времени работы у вас есть. но жаль нет числа затронутых строк. mysqlsla "нормализует" похожие запросы и позволит собрать более удобную статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 14:51
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
допустим, если взять perl, то задача из позиционного разбора превращается в простейшее регулярное выражение cat $1 | grep CommonsQueryLoggingListener | perl -npe 's/Query:{\[(.+)\]\[\]}/$1/' sort | uniq > tmp/sql.tmp Чего-то подобного можно добиться и с помощью утилиты pgrep, если она есть. Вот perl есть наверняка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 14:54
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
палочку потерял в предыдущем сообщении cat $1 | grep CommonsQueryLoggingListener | perl -npe 's/Query:{\[(.+)\]\[\]}/$1/' | sort | uniq > tmp/sql.tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 16:18
|
|||
|---|---|---|---|
|
|||
работа с cat и cut |
|||
|
#18+
вообще ничего не отбирает этот скрипт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 17:24
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
lubava1991, может и ошибся если я что-то не так понял, то предлагаю вам исправить по мотивам. главная мысль - есть более лаконичные и удобные средства практически всегда присутствующие на unix помимо cut и cat вот так пробуйте cat $1 | grep CommonsQueryLoggingListener | perl -npe 's/.+Query:{\[(.+)\]\[\]}/$1/' | sort | uniq > tmp/sql.tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2011, 18:49
|
|||
|---|---|---|---|
работа с cat и cut |
|||
|
#18+
Как совершенно правильно говорят вышеуказанные товарищи, cut с разделителями для таких данных явно не труъ. Лучше всего определить границы записи и вырезать. Так, если считать {[SQLВЫРАЖЕНИЕ][]} то можно cat test.txt | sed -e 's/.*{\[\(.*\)\]\[\]}.*/\1/' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=25&mobile=1&tid=1483845]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 175ms |

| 0 / 0 |
