Linux提示符中的新行字符?

时间:2011-10-25 05:07:54

标签: linux perl newline

我在Perl中使用qx在Linux机器上执行命令。

我正在尝试解析Perl中的一些输出,但不知道如何替换多行输出中的换行符。

我一直在尝试这样的事情:

$result =~ s/\\n/||/g;

我似乎回想起一些操作系统的'\ r',我一直尝试使用'\ n'进行不同的组合。

另外,我开始有一堆看起来像这样的行,并且想要合并它们:

$result =~ s/ bytes from /|/g;
$result =~ s/ \(/|/g;

2 个答案:

答案 0 :(得分:2)

如果\是特殊序列的开头(如果它后跟一个字母),或者它导致下一个字符按字面匹配(如果它后面跟着非字母)。因此,

s/\\n/

匹配\后跟n\n是一个与换行符匹配的特殊序列,因此您需要

/\n/

所以你可以使用

my $result = qx{ ... };
$result =~ s/\n/||/g;

perlre


关于其余部分,

$result =~ s/ bytes from /|/g;
$result =~ s/ \(/|/g;

就是

$result =~ s/ bytes from | \(/|/g;

答案 1 :(得分:1)

你不应该使用双反斜杠。

以下是如何做到这一点:

$text = <<EOS;
div class equals main
span id equals marquee
blog! slash span slah div
EOS

print "Before: $text \n\n\n\n";

$text =~ s/\n/\|\|/g;

print "After: $text \n\n\n\n";

以下是它的键盘:http://codepad.org/k0oA2YX4