perl: регулярные выражения вырезать часть текста

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
eem-kz
мл. сержант
Сообщения: 98
Зарегистрирован: 2010-05-02 15:58:53

perl: регулярные выражения вырезать часть текста

Непрочитанное сообщение eem-kz » 2011-11-25 8:41:39

Есть список в формате CSV файл (сохранен с Екселя). Формат такой:

Код: Выделить всё

Фамилия Имя Отчества; email@domain.net; passw
Не могу от туда вырезать localpart (до @)
Скрипт: часть кода

Код: Выделить всё

#!/usr/bin/perl
use strict;
use warnings;

while (<>) {
    my @l= split( /;/, $_ );
    print "$l[1]\t";
    my $ll= grep {/^[a-z0-9\._-]+/} $l[1];
    #    $ll = "$1";
        print "$ll\n";
    #    print "$l[0]\t $l[1] \n";
}
Целый день сидел, не как не могу разобраться...
Помогите!
Родной язык не русский. За это мне трудно изложит красиво. Поймите ...!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: perl: регулярные выражения вырезать часть текста

Непрочитанное сообщение hizel » 2011-11-25 13:18:21

Код: Выделить всё

hizel@wnight:~$ echo 'Фамилия Имя Отчества; email@domain.net; passw' > grep.txt
hizel@wnight:~$ cat grep.txt | perl grep.pl
 email@domain.net       email

Код: Выделить всё

hizel@wnight:~$ cat grep.pl
#!/usr/bin/perl

use strict;
use warnings;

while(<>) {
  my @l = split /;/, $_;
  print "$l[1]\t";

  if($l[1] =~ /([a-z0-9\._-]+)@([a-z0-9\._-]+)/) {
      my $local_part = $1;
      my $domain_part = $2;
      print "$local_part\n";
  } else {
      print "email not found\n";
  }
}
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

eem-kz
мл. сержант
Сообщения: 98
Зарегистрирован: 2010-05-02 15:58:53

Re: perl: регулярные выражения вырезать часть текста

Непрочитанное сообщение eem-kz » 2011-11-25 19:31:10

Спасибо! Очень помогли.
Родной язык не русский. За это мне трудно изложит красиво. Поймите ...!