2011-08-25 60 views
-3

我的文本文件包含这一项:适当的情况下第一场

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 

在这里,我有椰子,棉花高粱等,但我想打印这样的椰子,棉花,高粱即第一信宜大写,而不是在perl中使用正则表达式,而不是在任何包中。

而且你也看到了'其他',但我只想'其他'在该文本文件中。这还添加了上述表达式。

然后,这个文本文件将读取和写入同一个文件,即要重写,在Perl脚本

文件请任何一个建议我

+1

这个问题是穷人。我看不到任何代码。告诉我们你到目前为止所尝试过的。 –

回答

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"; 
} 
+0

+1:很好的使用后视断言 – Zaid

+0

data_1.txt包含我的数据。在这里,我正在使用读取这些文件并将其写入相同的文本文件(data_1.txt)。如果有任何可能,请让我知道。因为我试过这个,但是在写入过程之后(>)它会产生空文件 – user678992

+0

@Zaid:谢谢。我知道我可能需要一些时间:) –

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

请你解释一下这个命令 – user678992

+1

Works,但是在第二个正则表达式之后添加一个/ i也可以抓住'other' – Konerak

+1

参见概念验证:http://ideone.com/d6wKa – Konerak