Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сравнить текстовые значения и подсчитать. perl 
V
    Опции темы
treee
Дата 8.12.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Как сравнить текстовые значения и подсчитать.

Есть лог файл, у него структура такая:

2010-12-08 08:01:32 SPYWARE: 11.11.11.1 user_bb http://www.ru
2010-12-08 09:01:18 HELP: 11.11.11.3 kreen_sa http://www.ru
2010-12-08 18:01:34 DEAD: 11.11.11.1 user_bb http://www.ru


 Делаю:

($date,$time,$pravilo,$ip,$user,$address)=split;

Теперь мне надо сравнить значение $user (если они совпадают то просто складывать) и вывести их на экран.

Пробывал так if $user eq $user
                            $zed +=$user

Только учусь программированию на perl.

Пример (что должно вывести на экран) :

user_bb                  2
kreen_sa                1

 
PM MAIL   Вверх
alezzz
Дата 8.12.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Код

#!/usr/bin/perl

my %users = ();

while (<DATA>)
{
  ($date,$time,$pravilo,$ip,$user,$address)=split;
  $users{$user}++;
}

foreach $key (keys %users)
{
  print "$key $users{$key}\n";
}

__DATA__
2010-12-08 08:01:32 SPYWARE: 11.11.11.1 user_bb http://www.ru
2010-12-08 09:01:18 HELP: 11.11.11.3 kreen_sa http://www.ru
2010-12-08 18:01:34 DEAD: 11.11.11.1 user_bb http://www.ru


Выхлоп:
Код

kreen_sa 1
user_bb 2

PM MAIL   Вверх
treee
Дата 8.12.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



alezzz

Огромное спасибо.
PM MAIL   Вверх
treee
Дата 14.12.2010, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Ещё вопрос появился:

Как отсюда:

#!/usr/bin/perl

my %users = ();

while (<DATA>)
{
  ($date,$time,$pravilo,$ip,$user,$address)=split;
  $users{$user}++;
}

foreach $key (keys %users)
{
  print "$key $users{$key}\n";
}

__DATA__
2010-12-08 08:01:32 SPYWARE: 11.11.11.1 user_bb http://www.ru
2010-12-08 09:01:18 HELP: 11.11.11.3 kreen_sa http://www.ru
2010-12-08 18:01:34 DEAD: 11.11.11.1 user_bb http://www.ru


получить:


user_bb 
SPYWARE: 1
DEAD: 1

kreen_sa
HELP: 1


PM MAIL   Вверх
alezzz
Дата 14.12.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Пока-что так:
Код

#!/usr/bin/perl

my %users;
my %prav;

while (<DATA>)
{
  ($date,$time,$pravilo,$ip,$user,$address)=split;
  $users{$user}++;
  $prav{$user}{$pravilo}++;
}

foreach $key (keys %users)
{
#  print "$key:\n$users{$key}\n";
  print "$key\n";
  foreach $pkey (keys %{$prav{$key}})
  {
    print "$pkey ${$prav{$key}}{$pkey}\n";
  }
}

__DATA__
2010-12-08 08:01:32 SPYWARE: 11.11.11.1 user_bb http://www.ru
2010-12-08 09:01:18 HELP: 11.11.11.3 kreen_sa http://www.ru
2010-12-08 18:01:34 DEAD: 11.11.11.1 user_bb http://www.ru


Код

kreen_sa
HELP: 1
user_bb
SPYWARE: 1
DEAD: 1


У меня вопрос к специалистам по оптимальности такого подхода, может есть более изящное решение? Спрашиваю потому, что примерно этим в основном на перле и занимаюсь, перелопачиваю текст (логи и т.д.) и привожу их к более читаемому виду.

Это сообщение отредактировал(а) alezzz - 14.12.2010, 11:35
PM MAIL   Вверх
treee
Дата 14.12.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



alezzz

Спасибо огромное.



Это сообщение отредактировал(а) treee - 14.12.2010, 13:34
PM MAIL   Вверх
shamber
Дата 14.12.2010, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



treee, а вы хотите чтобы вам под каждую задачу скрипт писали? может подумаете?

PM MAIL Jabber   Вверх
treee
Дата 14.12.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



shamber


Задача у меня одна изучения - PERL.
Прежде чем писать я сам пробую сделать, если не получается я спрашиваю....

Это сообщение отредактировал(а) treee - 14.12.2010, 13:33
PM MAIL   Вверх
shamber
Дата 14.12.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



тут был код которого теперь нет

А если стоит задача обучения, то стоит начать с книжек по perl. Там про хеши и прочее пишут


Это сообщение отредактировал(а) shamber - 14.12.2010, 13:36
PM MAIL Jabber   Вверх
treee
Дата 14.12.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



shamber

уже понял, просто тупанул....
PM MAIL   Вверх
JackYF
Дата 15.12.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



alezzzМодератор: Пожалуйста, один топик - один вопрос.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
alezzz
Дата 15.12.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Цитата(JackYF @  15.12.2010,  20:28 Найти цитируемый пост)
alezzz, Модератор: Пожалуйста, один топик - один вопрос.


Понял.
Но если бы мне ответили, то это также было бы ответом на вопрос топика.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0949 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.