[Moscow.pm] # Не удаляется в скобках

Кузьменко Константин ikkv на yandex.ru
Пн Апр 6 00:56:55 PDT 2015


Добрый день,
Спасибо, за помощь!

-- 
Специалист IT, GNU, FLOSS, Open Source
Моб: +7 (951) 131 33 90
С уважением,
Кузьменко Константин Викторович


06.04.2015, 00:37, "Nikolay Mishin" <mi на ya.ru>:
>  Костя, у меня получилось вот так:
>
>  #!/usr/bin/perl
>  use strict;
>  use warnings;
>  use utf8;
>  use Modern::Perl;
>  use IO::Interactive qw(is_interactive);
>  use Encode::Locale qw(decode_argv);
>  use Text::CSV;
>
>  &prepare_encoding_console();
>
>  my $csv = Text::CSV->new(
>      {
>          binary           => 1,
>          auto_diag        => 1,
>          sep_char         => '|',
>          allow_whitespace => 1,
>      }
>  );
>  my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";
>  my @result = ();
>  open( my $data, '<:encoding(utf8)', $file )
>    or die "Could not open '$file' $!\n";
>
>  while ( my $fields = $csv->getline($data) ) {
>      push @result, ( join( ';', @{$fields}[ 1, 3 .. 5, 2 ] ) . ';' );
>  }
>  if ( not $csv->eof ) {
>      $csv->error_diag();
>  }
>  close $data;
>  print join( "\n", @result );
>
>  sub prepare_encoding_console {
>      if ( is_interactive() ) {
>          binmode STDIN,  ':encoding(console_in)';
>          binmode STDOUT, ':encoding(console_out)';
>          binmode STDERR, ':encoding(console_out)';
>      }
>      Encode::Locale::decode_argv();
>      return 1;
>  }
>
>  https://github.com/mishin/presentation/blob/master/gen_csv.pl
>
>  исходный файл
>  https://github.com/mishin/presentation/blob/master/test.txt
>  запускать так
>
>  perl  gen_csv.pl test.txt
>  12345678901234567890;ФАМИЛИЯ;ИМЯ;ОТЧЕСТВО;760.00;
>  12345678901234567890;ФАМИЛИЯ1;ИМЯ1;ОТЧЕСТВО;760.00;
>
>  05.04.2015, 23:40, "Кузьменко Константин" <ikkv на yandex.ru>:
>>   Вот так "/\s*\|\s*/" удаляются пробелы и "\n" и тд и тп но мне же надо оставить "\n" в конце строки
>>   Подходит это:
>>   $_ =~ s/\h+//g;
>>   $_ =~ s/\|/;/g;
>>   Вопрос как удалить столбци
>>
>>   --
>>   Специалист IT, GNU, FLOSS, Open Source
>>   Моб: +7 (951) 131 33 90
>>   С уважением,
>>   Кузьменко Константин Викторович
>>
>>   05.04.2015, 23:24, "Ilya Chesnokov" <chesnokov.ilya на gmail.com>:
>>>    5 апреля 2015 г., 23:14 пользователь Кузьменко Константин
>>>    <ikkv на yandex.ru> написал:
>>>>     Это файл TXT
>>>>     123 | 12345678901234567890 |     760.00 |ФАМИЛИЯ       |ИМЯ            |ОТЧЕСТВО     |123456|222|888|9|RU|00007|
>>>>     На Выходе должен получиться CSV
>>>>     12345678901234567890;ФАМИЛИЯ;ИМЯ;ОТЧЕСТВО;760.00;
>>>    Это вообще проще без регулярок делать. А банальным split-ом (с
>>>    минимальной регуляркой вида /\s*|\s*/) и join-ом (ну или при помощи
>>>    модуля Text::CSV).
>>>>     --
>>>>     Специалист IT, GNU, FLOSS, Open Source
>>>>     Моб: +7 (951) 131 33 90
>>>>     С уважением,
>>>>     Кузьменко Константин Викторович
>>>>
>>>>     05.04.2015, 18:16, "Иван Миронов" <mironorange на gmail.com>:
>>>>>     Константин, Добрый день!
>>>>>
>>>>>     Попробуйте уменьшить жадность квантификаторов добавив после знаков звездочки вопросительный знак.
>>>>>
>>>>>     s/^(.*?;).*?;.*?;.*?;.*?;.*?;(.*?;.*?;.*?;.*?;.*?;.*?;)$//g;
>>>>>
>>>>>     Если не получится, я думаю было бы здорово если бы вы приложили пример исходных данных для этого регулярного выражения.
>>>>>
>>>>>     воскресенье, 5 апреля 2015 г. пользователь Алексей Мышкин написал:
>>>>>>     Есть подозрение что жадный квантификатор берёт всё что может, и строке за скобками уже ничего не остаётся.
>>>>>>
>>>>>>     5 апреля 2015 г., 15:42 пользователь Кузьменко Константин <ikkv на yandex.ru> написал:
>>>>>>>     Добрый день Moscow.pm
>>>>>>>     Не могу понять регулярки перл!
>>>>>>>
>>>>>>>     #!/usr/bin/perl
>>>>>>>
>>>>>>>     use strict;
>>>>>>>     use warnings;
>>>>>>>     use utf8;
>>>>>>>     use open qw/ :encoding(utf8) :std /;
>>>>>>>     #use open qw/ :encoding(cp1251) :std /;
>>>>>>>
>>>>>>>     my @onfil = @ARGV;
>>>>>>>     open(INFIL, "<:encoding(cp866)", $onfil[0])
>>>>>>>         or die "NO STANDART $!";
>>>>>>>
>>>>>>>     while (<INFIL>) {
>>>>>>>         $_ =~ s/\h+//g;
>>>>>>>         $_ =~ s/\|/;/g;
>>>>>>>         $_ =~ s///g;
>>>>>>>         $_ =~ s/^(.*;).*;.*;.*;.*;.*;(.*;.*;.*;.*;.*;.*;)$//g; # Не удаляется в скобках
>>>>>>>         print;
>>>>>>>     }
>>>>>>>
>>>>>>>     close INFIL;
>>>>>>>
>>>>>>>     __END__
>>>>>>>
>>>>>>>     Может что нибудь посоветуете
>>>>>>>     зы: Z yjdbxjr d Зукл
>>>>>>>     --
>>>>>>>     Специалист IT, GNU, FLOSS, Open Source
>>>>>>>     Моб: +7 (951) 131 33 90
>>>>>>>     С уважением,
>>>>>>>     Кузьменко Константин Викторович
>>>>>>>
>>>>>>>     --
>>>>>>>     Moscow.pm mailing list
>>>>>>>     moscow-pm на pm.org | http://moscow.pm.org
>>>>>>     --
>>>>>>     С уважением,
>>>>>>     Мышкин Алексей.
>>>>>     --
>>>>>     С уважением, Миронов Иван!
>>>>>     тел.: +7 (926) 206-90-39
>>>>>
>>>>>     ,
>>>>>
>>>>>     --
>>>>>     Moscow.pm mailing list
>>>>>     moscow-pm на pm.org | http://moscow.pm.org
>>>>     --
>>>>     Moscow.pm mailing list
>>>>     moscow-pm на pm.org | http://moscow.pm.org
>>>    --
>>>    Best regards,
>>>    Ilya Chesnokov
>>>    --
>>>    Moscow.pm mailing list
>>>    moscow-pm на pm.org | http://moscow.pm.org
>>   --
>>   Moscow.pm mailing list
>>   moscow-pm на pm.org | http://moscow.pm.org
>  --
>  С уважением
>  Николай Мишин
>
>  --
>  Moscow.pm mailing list
>  moscow-pm на pm.org | http://moscow.pm.org

-- 
Специалист IT, GNU, FLOSS, Open Source
Моб: +7 (951) 131 33 90
С уважением,
Кузьменко Константин Викторович


06.04.2015, 00:37, "Nikolay Mishin" <mi на ya.ru>:
> Костя, у меня получилось вот так:
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> use utf8;
> use Modern::Perl;
> use IO::Interactive qw(is_interactive);
> use Encode::Locale qw(decode_argv);
> use Text::CSV;
>
> &prepare_encoding_console();
>
> my $csv = Text::CSV->new(
>     {
>         binary           => 1,
>         auto_diag        => 1,
>         sep_char         => '|',
>         allow_whitespace => 1,
>     }
> );
> my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";
> my @result = ();
> open( my $data, '<:encoding(utf8)', $file )
>   or die "Could not open '$file' $!\n";
>
> while ( my $fields = $csv->getline($data) ) {
>     push @result, ( join( ';', @{$fields}[ 1, 3 .. 5, 2 ] ) . ';' );
> }
> if ( not $csv->eof ) {
>     $csv->error_diag();
> }
> close $data;
> print join( "\n", @result );
>
> sub prepare_encoding_console {
>     if ( is_interactive() ) {
>         binmode STDIN,  ':encoding(console_in)';
>         binmode STDOUT, ':encoding(console_out)';
>         binmode STDERR, ':encoding(console_out)';
>     }
>     Encode::Locale::decode_argv();
>     return 1;
> }
>
> https://github.com/mishin/presentation/blob/master/gen_csv.pl
>
> исходный файл
> https://github.com/mishin/presentation/blob/master/test.txt
> запускать так
>
> perl  gen_csv.pl test.txt
> 12345678901234567890;ФАМИЛИЯ;ИМЯ;ОТЧЕСТВО;760.00;
> 12345678901234567890;ФАМИЛИЯ1;ИМЯ1;ОТЧЕСТВО;760.00;
>
> 05.04.2015, 23:40, "Кузьменко Константин" <ikkv на yandex.ru>:
>>  Вот так "/\s*\|\s*/" удаляются пробелы и "\n" и тд и тп но мне же надо оставить "\n" в конце строки
>>  Подходит это:
>>  $_ =~ s/\h+//g;
>>  $_ =~ s/\|/;/g;
>>  Вопрос как удалить столбци
>>
>>  --
>>  Специалист IT, GNU, FLOSS, Open Source
>>  Моб: +7 (951) 131 33 90
>>  С уважением,
>>  Кузьменко Константин Викторович
>>
>>  05.04.2015, 23:24, "Ilya Chesnokov" <chesnokov.ilya на gmail.com>:
>>>   5 апреля 2015 г., 23:14 пользователь Кузьменко Константин
>>>   <ikkv на yandex.ru> написал:
>>>>    Это файл TXT
>>>>    123 | 12345678901234567890 |     760.00 |ФАМИЛИЯ       |ИМЯ            |ОТЧЕСТВО     |123456|222|888|9|RU|00007|
>>>>    На Выходе должен получиться CSV
>>>>    12345678901234567890;ФАМИЛИЯ;ИМЯ;ОТЧЕСТВО;760.00;
>>>   Это вообще проще без регулярок делать. А банальным split-ом (с
>>>   минимальной регуляркой вида /\s*|\s*/) и join-ом (ну или при помощи
>>>   модуля Text::CSV).
>>>>    --
>>>>    Специалист IT, GNU, FLOSS, Open Source
>>>>    Моб: +7 (951) 131 33 90
>>>>    С уважением,
>>>>    Кузьменко Константин Викторович
>>>>
>>>>    05.04.2015, 18:16, "Иван Миронов" <mironorange на gmail.com>:
>>>>>    Константин, Добрый день!
>>>>>
>>>>>    Попробуйте уменьшить жадность квантификаторов добавив после знаков звездочки вопросительный знак.
>>>>>
>>>>>    s/^(.*?;).*?;.*?;.*?;.*?;.*?;(.*?;.*?;.*?;.*?;.*?;.*?;)$//g;
>>>>>
>>>>>    Если не получится, я думаю было бы здорово если бы вы приложили пример исходных данных для этого регулярного выражения.
>>>>>
>>>>>    воскресенье, 5 апреля 2015 г. пользователь Алексей Мышкин написал:
>>>>>>    Есть подозрение что жадный квантификатор берёт всё что может, и строке за скобками уже ничего не остаётся.
>>>>>>
>>>>>>    5 апреля 2015 г., 15:42 пользователь Кузьменко Константин <ikkv на yandex.ru> написал:
>>>>>>>    Добрый день Moscow.pm
>>>>>>>    Не могу понять регулярки перл!
>>>>>>>
>>>>>>>    #!/usr/bin/perl
>>>>>>>
>>>>>>>    use strict;
>>>>>>>    use warnings;
>>>>>>>    use utf8;
>>>>>>>    use open qw/ :encoding(utf8) :std /;
>>>>>>>    #use open qw/ :encoding(cp1251) :std /;
>>>>>>>
>>>>>>>    my @onfil = @ARGV;
>>>>>>>    open(INFIL, "<:encoding(cp866)", $onfil[0])
>>>>>>>        or die "NO STANDART $!";
>>>>>>>
>>>>>>>    while (<INFIL>) {
>>>>>>>        $_ =~ s/\h+//g;
>>>>>>>        $_ =~ s/\|/;/g;
>>>>>>>        $_ =~ s///g;
>>>>>>>        $_ =~ s/^(.*;).*;.*;.*;.*;.*;(.*;.*;.*;.*;.*;.*;)$//g; # Не удаляется в скобках
>>>>>>>        print;
>>>>>>>    }
>>>>>>>
>>>>>>>    close INFIL;
>>>>>>>
>>>>>>>    __END__
>>>>>>>
>>>>>>>    Может что нибудь посоветуете
>>>>>>>    зы: Z yjdbxjr d Зукл
>>>>>>>    --
>>>>>>>    Специалист IT, GNU, FLOSS, Open Source
>>>>>>>    Моб: +7 (951) 131 33 90
>>>>>>>    С уважением,
>>>>>>>    Кузьменко Константин Викторович
>>>>>>>
>>>>>>>    --
>>>>>>>    Moscow.pm mailing list
>>>>>>>    moscow-pm на pm.org | http://moscow.pm.org
>>>>>>    --
>>>>>>    С уважением,
>>>>>>    Мышкин Алексей.
>>>>>    --
>>>>>    С уважением, Миронов Иван!
>>>>>    тел.: +7 (926) 206-90-39
>>>>>
>>>>>    ,
>>>>>
>>>>>    --
>>>>>    Moscow.pm mailing list
>>>>>    moscow-pm на pm.org | http://moscow.pm.org
>>>>    --
>>>>    Moscow.pm mailing list
>>>>    moscow-pm на pm.org | http://moscow.pm.org
>>>   --
>>>   Best regards,
>>>   Ilya Chesnokov
>>>   --
>>>   Moscow.pm mailing list
>>>   moscow-pm на pm.org | http://moscow.pm.org
>>  --
>>  Moscow.pm mailing list
>>  moscow-pm на pm.org | http://moscow.pm.org
>
> --
> С уважением
> Николай Мишин
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


Подробная информация о списке рассылки Moscow-pm