The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Bash Скрипт обработка писем или текстовых файлов"
Отправлено ILYA INDIGO, 17-Июл-10 14:58 
>я бы посоветовал использовать perl все таки он изобретен для обработки текста
>и как никто лучше справляеться с єтой задачей
>
>ну вот где-то так.. печатал сразу тут так что на ерроры не
>проверял.

Ок спасибо за совет и ответ, я таки, буду пытаться это переделать на PERL-е.

Но алгоритм всё равно не работает должным образом...

Вот фрагмент текста письма, находящегося в файле: ./mail/111

Received: (qmail 29944 invoked from network); 8 Jan 2003 07:10:33 -0000
Received: from dev212.mailshell.com (HELO mailshell.com) (71.129.195.163)
  by dev50.mailshell.com with SMTP; 8 Jan 2003 07:10:33 -0000
Received: (qmail 26211 invoked by uid 99); 8 Jan 2003 07:10:33 -0000
Message-ID: <20030108071033.15907.qmail@mailshell.com>
Received: (qmail 13669 invoked from network); 8 Jan 2003 07:10:31 -0000
Received: from unknown (HELO anclsmtp03.myfamily.com) (63.92.90.192)
  by www.mailshell.com with SMTP; 8 Jan 2003 07:10:31 -0000
Received: from ancnews01 (10.6.8.151) by anclsmtp03.myfamily.com (LSMTP for Windows NT v1.1b) with SMTP id <22.00312C4E@anclsmtp03.myfamily.com>; Wed, 8 Jan 2003 0:11:17 -0700
X-Sender: <unsubscribe.nbrc8744.000001.1048576.0.0@unsubscribe.myfamily.com>
Reply-To: <unsubscribe.nbrc8744.000001.1048576.0.0@unsubscribe.myfamily.com>
From: "Ancestry Special Offer" <newsletter@Reply.MyFamilyInc.com>
To: "Mailshell User" <nospam@mailshell.com>
Subject: Connect with your ancestors online
Date: Wed, 08 Jan 2003 07:11:15 -0000

Connect with your ancestors online. Join Ancestry.com
...
Всё ниже со слова Connect является заголовком, или по крайней мере, не нуждается в обработки по IP.

Вот ваш предложенный код:

#!/usr/bin/perl
use Socket;

my $file = './mail/111';
my @ips;
open(FILE,"<$file");
while(<FILE>){
if ( /(\d+\.\d+\.\d+\.\d+)/  ){ # Первый алгоритм
# if ( /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/  ){ # Второй алгоритм
   my $ip = $1;
   @ips = push(@ips,$ip); #для того чтобы поместить айпишник в масив ips(если нужно)
   print "$ip\n"; # для того чтобы вывести его
   $ip = inet_aton($ip);
   $name  = gethostbyaddr($ip, AF_INET); # для того чтобы вернуть его доменое имя
}
}perl

При первом алгоритме имеем такой вывод:

71.129.195.163
63.92.90.192
10.6.8.151
8744.000001.1048576.0
8744.000001.1048576.0

При втором алгоритме имеем следующий вывод:

71
63
10

Вот из-за наличия таких "противных" строк как

Reply-To: <unsubscribe.nbrc8744.000001.1048576.0.0@unsubscribe.myfamily.com>

Первый алгоритм не до конца эффективен, так как нужно строго указать, что цифр может быть НЕ менее 1, но и не более 3.

Второй алгоритм, почему-то, выделяет прочто первую циру каждого IP-шника, хотя отфильтровует IP верно.

>Ну и почитайте книжку по регулярным выражениям.

Подскажите пожалуйста сею книжку, а лучше и url на неё. Я составлял алгоритм, основываясь на этом https://www.opennet.ru/docs/RUS/bash_scripting_guide/c11895.h...

P.S. Чувствую тему уже нужно переносить в раздел PERL, но если кто то уверен, что с текущей задачей можно справиться средствами Bash, пожалуйста, предлогайте свои решения :)

Напоминаю папку с письмами,что бы проверить как скрипт должен работать в реальных условиях, можно скачать тут http://ILYA.pp.ua/m.7z

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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