2012-08-06 207 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重定向,因为它是更安全。