适当的第一场

时间:2011-08-25 08:51:07

标签: perl

我的文本文件包含以下内容:

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等。但我想打印像椰子,棉花,Jowar,即第一个字母应该是大写而不是使用perl中的正则表达而不是任何包....

而且你也看过'其他',但我只希望文本文件中有'其他'。这也加上了上面的表达。

然后,这个文本文件将读取和写入相同的文件,即在perl脚本中覆盖该文件

请任何人建议我

2 个答案:

答案 0 :(得分:3)

#!/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";
}

答案 1 :(得分:2)

s/^([^,]*)/\u\L$1/;s/,Others,/,Other,/;