1

我正在尝试删除一些以 % 符号开头的内容。输入将是这样的。

%abc
%bbc

我已经编写了如下脚本:

my $lineno=1;

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

但它正在从第一个 % 符号中提取整个文件

pl。在这方面提供帮助

我用了我从下面得到的答案。但我得到更多空间,我无法删除这些空间

4

2 回答 2

2

如果您尝试删除以百分号开头的行,只需执行

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

您可以使用正则表达式,但如果您只想不打印任何内容,那真的没有意义。

我不知道你为什么插入和删除 &del; 字符串,但它是完全多余的。

您可以使用就地编辑开关来编辑文件,这将是

perl -i -ne ' ... ' input

或者有备份

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

大多数时候,我更喜欢 shell 重定向,因为它更安全。

于 2012-08-06T13:34:08.967 回答
0
use strict;

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

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

输出

ccc
于 2012-08-06T12:54:26.830 回答