2011-07-12 19 views

回答

6

要更換_[0-9],你可以做this

$s =~ s/_([0-9])/,$1/g 

#the same without capturing groups 
$s =~ s/_(?=[0-9])/,/g; 

編輯: 要獲得2之後額外的逗號,你可以這樣做:

#This puts a , before all whitespace. 
$s =~ s/_(?=[0-9])|(?=\s)/,/g; 

#This one puts a , between [0-9] and any whitespace 
$s =~ s/_(?=[0-9])|(?<=[0-9])(?=\s)/,/g; 
+0

謝謝..作品gr8 :) – learner

+0

oops輸出是21pro_ABCD_EDG,10800,48052,2 0.0我需要一個','在最後的'2'之後和0.0之前你能幫我那個 – learner

+0

我已經編輯我的答案來解決這個問題。讓我知道是否有其他規則,這不包括。 –

1

戰略經濟對話的做法是類似以下內容:

[email protected]:~ echo '21pro_ABCD_EDG_10800_48052_2 0.0' | sed 's/_\([0-9]\)/,\1/g' 
21pro_ABCD_EDG,10800,48052,2 0.0 
0

使用jacob提到的表達式,這裏是執行大文件替換的代碼片段

#!/usr/local/bin/perl 
open (MYFILE, 'test'); 
while (<MYFILE>) { 
    chomp; 
    $s=$_; 
    $s =~ s/_(?=[0-9])|(?<=[0-9])(?=\s)/,/g; 
    $s =~ s/\s//g; 
    print "$s\n"; 
} 

close(MYFILE);