BEGIN {
patterns[1] = "/pattern1/"
patterns[2] = "/pattern1/"
...
}
{
for(i in patterns) {
if($0 ~ patterns[i]) {
//some logic
//...
}
}
}Почему-то в условии значение переменной не воспринимается как паттерн и условия не выполняется. Как правильно будет сделать? Смысл этого в том, что есть много паттернов, которые будут меняться, хотелось бы их вынести в отдельную переменную, что-то типа настроек. Логики ниже много, привел укороченный вариант, чисто для разъяснения вопроса.
>[оверквотинг удален]
> //...
> }
> }
>}
>
>Почему-то в условии значение переменной не воспринимается как паттерн и условия не
>выполняется. Как правильно будет сделать? Смысл этого в том, что есть
>много паттернов, которые будут меняться, хотелось бы их вынести в отдельную
>переменную, что-то типа настроек. Логики ниже много, привел укороченный вариант, чисто
>для разъяснения вопроса.а не проще все зделать на перле?
>а не проще все зделать на перле?вариант. 1,5гига парсится за 6мин. как думаете на перле как будет? я погуглил как-то так в порядке убывания скорости:
sed
awk
perl
>>а не проще все зделать на перле?
>
>вариант. 1,5гига парсится за 6мин. как думаете на перле как будет? я
>погуглил как-то так в порядке убывания скорости:
>sed
>awk
>perl1) чем мерял? )))
2) метод "тупого перебора" он и в basic'е всего лишь метод тупого перебора и ничего более.
о какой скорости тут можно рассуждать мне вообще непонятно ))
3) по поводу перла: парсить разные паттерны и регексы намного проще и удобнее - ибо язык изначально под это заточен
IMHO, то что Вы написали больше похоже на perl, чем на awk.
на awk это будет
/pattern1/ { some logic 1 } /pattern2/ { other logig } ... { all other }
> patterns[1] = "/pattern1/"
> patterns[2] = "/pattern1/"Заменяем на:
patterns[1] = "pattern1"
patterns[2] = "pattern-кстати-2"
;) Ага?