Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Общий
(Модератор:
Вад
) > Тема:
awk pcre, group by
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: awk pcre, group by (Прочитано 11091 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист
Offline
awk pcre, group by
«
:
12-09-2007 10:39 »
нехватает реализации в гавк:
pcre: backreferences, minimal match
что проще:
- поискать другую авк
- попытаться присоединить библиотеку pcre
- повторить и перейти на перл?
«
Последнее редактирование: 13-09-2007 17:27 от Mayor
»
Записан
1n c0de we trust
RXL
Технический
Администратор
Offline
Пол:
Re: awk pcre
«
Ответ #1 :
13-09-2007 16:47 »
Перейти на Perl.
Я сперва awk изучил. Когда на нем пришлось писать не простые фильтры, а более сложные парсеры для большого объема текста, то он показал малую гибкость языка и очень медленную работу. Переписав все это на perl (я его тогда только начал изучать) я получил увеличение сколости раз в 20 и несравненно более гибкий и удобный инструмент.
Для автоматизации перехода в комплекте с perl идет утилита a2pl - конвертор из awk в perl. 100% работоспособности он не даст, но простые фильтры легко переводит.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист
Offline
Re: awk pcre, group by
«
Ответ #2 :
13-09-2007 17:28 »
пока времени на изучение перла нету
как на авк реализовать агрегатную функцию по регулярному выражению?
например есть таблица вида:
Код:
20070113\t12
20070216\t60
20070217\t70
20070310\t80
и тд
нада сложить 2 поле по месяцам:
01 = 12
02 = 130
03 = 80
и тд
Записан
1n c0de we trust
RXL
Технический
Администратор
Offline
Пол:
Re: awk pcre, group by
«
Ответ #3 :
13-09-2007 18:25 »
Извиняюсь за посыл на RTFM...
Посмотри в мане на awk блоки BEGIN и END, массивы, ф-ии (substr).
Если год может меняться, то в "месяц" стоит включить первые шесть цифр.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист
Offline
Re: awk pcre, group by
«
Ответ #4 :
14-09-2007 15:22 »
Цитата: RXL от 13-09-2007 18:25
Извиняюсь за посыл на RTFM...
Посмотри в мане на awk блоки BEGIN и END, массивы, ф-ии (substr).
Если год может меняться, то в "месяц" стоит включить первые шесть цифр.
не год просто для примера, мне нада как-то приравнять переменую к значению /lsdjkf(sldkf)sdflk/ \1 -- полученному внутри скобок
потом то будет элементарно выполнить агрегатную функцию над ассоцированным списком
Записан
1n c0de we trust
RXL
Технический
Администратор
Offline
Пол:
Re: awk pcre, group by
«
Ответ #5 :
17-09-2007 17:26 »
Код: (awk)
/^
[
0
-
9
]
{
6
}
[
\t
]
[
0
-
9
]
+/
{
print
substr
(
$1
,
5
,
2
)
" = "
$2
;
}
Для работы квантификатора
{}
нужно запускать awk параметром --posix.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист
Offline
Re: awk pcre, group by
«
Ответ #6 :
18-09-2007 05:20 »
Цитата: RXL от 17-09-2007 17:26
Код: (awk)
/^
[
0
-
9
]
{
6
}
[
\t
]
[
0
-
9
]
+/
{
print
substr
(
$1
,
5
,
2
)
" = "
$2
;
}
Для работы квантификатора
{}
нужно запускать awk параметром --posix.
а как сделать в actions regexp backreference?
Записан
1n c0de we trust
RXL
Технический
Администратор
Offline
Пол:
Re: awk pcre, group by
«
Ответ #7 :
18-09-2007 18:26 »
Похоже, что awk их не поддерживает - в мане нет упоминаний - у него это просто группировка.
Для таких простых вещей вполне подойдет sed.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист
Offline
Re: awk pcre, group by
«
Ответ #8 :
23-09-2007 07:17 »
Код:
BEGIN { FS = "\t" }
{
month = substr($1, 5, 2) # substr($1, 1, 6) если надо учесть и год
sum[month] += $2
}
END {
OFS = "\t"
for (month in sum)
print month, sum[month] | "sort"
}
Записан
1n c0de we trust
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Общий
(Модератор:
Вад
) > Тема:
awk pcre, group by
Загружается...