The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вопрос по массивам в awk, !*! BigEye, 02-Сен-09, 15:44  [смотреть все]
BEGIN {
  patterns[1] = "/pattern1/"
  patterns[2] = "/pattern1/"
  ...
}
{
  for(i in patterns) {
   if($0 ~ patterns[i]) {
     //some logic
     //...
   }
  }
}

Почему-то в условии значение переменной не воспринимается как паттерн и условия не выполняется. Как правильно будет сделать? Смысл этого в том, что есть много паттернов, которые будут меняться, хотелось бы их вынести в отдельную переменную, что-то типа настроек. Логики ниже много, привел укороченный вариант, чисто для разъяснения вопроса.

  • Вопрос по массивам в awk, !*! Pahanivo, 16:10 , 02-Сен-09 (1)
    >[оверквотинг удален]
    >     //...
    >   }
    >  }
    >}
    >
    >Почему-то в условии значение переменной не воспринимается как паттерн и условия не
    >выполняется. Как правильно будет сделать? Смысл этого в том, что есть
    >много паттернов, которые будут меняться, хотелось бы их вынести в отдельную
    >переменную, что-то типа настроек. Логики ниже много, привел укороченный вариант, чисто
    >для разъяснения вопроса.

    а не проще все зделать на перле?

    • Вопрос по массивам в awk, !*! BigEye, 16:15 , 02-Сен-09 (2)
      >а не проще все зделать на перле?

      вариант. 1,5гига парсится за 6мин. как думаете на перле как будет? я погуглил как-то так в порядке убывания скорости:
      sed
      awk
      perl

      • Вопрос по массивам в awk, !*! Pahanivo, 17:23 , 02-Сен-09 (3)
        >>а не проще все зделать на перле?
        >
        >вариант. 1,5гига парсится за 6мин. как думаете на перле как будет? я
        >погуглил как-то так в порядке убывания скорости:
        >sed
        >awk
        >perl

        1) чем мерял? )))
        2) метод "тупого перебора" он и в basic'е всего лишь метод тупого перебора и ничего более.
        о какой скорости тут можно рассуждать мне вообще непонятно ))
        3) по поводу перла: парсить разные паттерны и регексы намного проще и удобнее - ибо язык изначально под это заточен

  • Вопрос по массивам в awk, !*! Андрей, 18:48 , 02-Сен-09 (4)
    IMHO, то что Вы написали больше похоже на perl, чем на awk.
    на awk это будет
    /pattern1/ { some logic 1 } /pattern2/ { other logig } ... { all other }
  • Вопрос по массивам в awk, !*! Andrey Mitrofanov, 20:10 , 02-Сен-09 (5)
    >  patterns[1] = "/pattern1/"
    >  patterns[2] = "/pattern1/"

    Заменяем на:
    patterns[1] = "pattern1"
    patterns[2] = "pattern-кстати-2"
    ;) Ага?




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

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