2011-08-25 53 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