2012-08-06 165 views
1

我試圖刪除一些以%符號開頭的內容。輸入將是這樣的。從文本文件中刪除%符號

%abc 
%bbc 

我已經writtent腳本象下面這樣:

my $lineno=1; 

while ($chapline =~ m/\%(.*?)$/msg) 
    { 
    $chapline =~ s/\%(.*?)$/&del;/g; 
    } 
$chapline =~ s/&del;//g; 

但提取第一符號%

PL整個文件。在這方面的幫助

我用我從下面得到的答案。但我得到更多的空間,我無法刪除那些空間

+1

你想刪除整行或只是百分號嗎?怎麼了插入和刪除&del;字符串? – TLP 2012-08-06 13:09:03

回答

0
use strict; 

my $text = <<YOURTEXT; 
%abc 
%bbc 
ccc 
YOURTEXT 

$text =~ s/\%(?:.*?\n)//xmg; # \r\n or \n depends on OS 
print $text; 

輸出

ccc 
+0

我也以這種方式嘗試過,仍然沒有得到 – 2012-08-06 13:01:27

+0

再次嘗試我修復它:) – 2012-08-06 13:03:41

+0

感謝您的幫助 – 2012-08-06 13:22:43

2

如果你想刪除以百分號開頭的行,根本就

perl -ne 'print unless /^%/' input > output 

你可以使用一個正則表達式,但是如果你所要做的只是不打印任何東西,那麼它確實沒有意義。

我不知道爲什麼你插入和刪除&del;字符串,但它是完全多餘的。

您可以使用就地編輯切換到編輯的文件,這將是

perl -i -ne ' ... ' input 

或者與備份

perl -i.bak -ne ' ... ' input 

大部分的時間,我更喜歡shell重定向,因爲它是更安全。