我在Perl中使用qx在Linux机器上执行命令。
我正在尝试解析Perl中的一些输出,但不知道如何替换多行输出中的换行符。
我一直在尝试这样的事情:
$result =~ s/\\n/||/g;
我似乎回想起一些操作系统的'\ r',我一直尝试使用'\ n'进行不同的组合。
另外,我开始有一堆看起来像这样的行,并且想要合并它们:
$result =~ s/ bytes from /|/g;
$result =~ s/ \(/|/g;
答案 0 :(得分:2)
如果\
是特殊序列的开头(如果它后跟一个字母),或者它导致下一个字符按字面匹配(如果它后面跟着非字母)。因此,
s/\\n/
匹配\
后跟n
。 \n
是一个与换行符匹配的特殊序列,因此您需要
/\n/
所以你可以使用
my $result = qx{ ... };
$result =~ s/\n/||/g;
关于其余部分,
$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