2011-08-25 5 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에서 정규 표현식을 사용하여 남아있는 패키지가 아닌 ...

또한 '기타'를 보았지만 그 텍스트 파일에는 '기타'만 표시됩니다. 이것은 또한 위의 표현식을 추가했습니다.

그런 다음,이 텍스트 파일은 펄 스크립트

의 파일 중 하나가 나에게

+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)에 쓰고 있습니다. 어떤 가능성이 있으면 알려주십시오. Coz, 그 중 하나를 시도했지만 작성 프로세스 (>) 이후에 빈 파일이 생성됩니다. – user678992

+0

@Zaid : 감사합니다. 나는 언젠가 그것을 필요로 할 수 있음을 알고 있었다. :) –

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

이 명령을 설명해주십시오. – user678992

+1

작동하지만 두 번째 정규 표현식 뒤에/i를 추가하면 '기타'를 붙잡습니다. – Konerak

+1

개념 증명을 참조하십시오. http://ideone.com/d6wKa – Konerak