Собственное поле первого поля - PullRequest
0 голосов
/ 25 августа 2011

Мои текстовые файлы содержат это:

COcoNut,Other,900,21_7_2011,Coimbatore,TEINGKAAY
CotTon,Others,3500,21_7_2011,Coimbatore,PARUTTI
Maize,Others,1200,21_7_2011,Coimbatore,MAKKAACHOOLAM
Bajra,Other,1325,14_7_2011,Coimbatore,KAMBU
Jowar,Other,2750,14_7_2011,Coimbatore,CHOOLAM
Ragi,Other,910,14_7_2011,Coimbatore,KEIZHVARAKU
Coconut,Grade_I,650,12_7_2011,Coimbatore,TEINGKAAY GRADE ONNU
Copra,other,5300,7_7_2011,Coimbatore,KOPPARAI
Paddy,ADT_______36,950,15_7_2011,Madurai,NELLU ADT MUPPATTI AARU
Paddy,AST_16,950,15_7_2011,Madurai,NELLU AST PATINAARU

Здесь у меня были COcoNut, cotTon JOWar и т. Д. Но я хочу напечатать как этот Coconut, Cotton, Jowar, т.е. первая буква должна быть скорее заглавнойчем использование регулярного выражения в perl, а не в каких-либо пакетах ....

А также вы видели «Others», но я хочу только «Other» в этих текстовых файлах.Это также добавлено с приведенным выше выражением.

Затем эти текстовые файлы будут читать и записывать одни и те же файлы, т. Е. Быть перезаписаны в этих файлах в сценариях Perl

Пожалуйста, любой предложит мне

Ответы [ 2 ]

3 голосов
/ 25 августа 2011
#!/usr/bin/perl

use strict;
use warnings;

use IO::InSitu;

my ( $in, $out ) = open_rw ( '/path/to/file' );

my $separator = ',';

while ( <$in> ) {
    my @fields = split ( $separator => $_ );

    $fields[ 0 ] = ucfirst lc $fields[ 0 ];
    $fields[ 1 ] =~ s/(?<=other)s//gi;

    print { $out } join ( $separator => @fields ) . "\n";
}
2 голосов
/ 25 августа 2011
s/^([^,]*)/\u\L$1/;s/,Others,/,Other,/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...