如何从以|结尾的命令中删除“新行” wl -l in perl

时间:2010-07-12 18:14:32

标签: perl

ps efax 2&gt; / dev / null | grep firstbo | grep -v grep | wc -l <​​/ p>

如果我将其存储为标量,那么,标量包含一个新行,如何删除新行

3 个答案:

答案 0 :(得分:6)

chomp $scalar;

ps之后的所有内容都可以在脚本中更高效地完成,如下所示:

my $count = 0;
open(my $ps, "ps -e -o comm |") or die "failed to spawn ps: $!";
while(<$ps>) {
    $count++ if /firstbo/;
}
close $ps;

答案 1 :(得分:3)

chomp $scalar会吃换行符

答案 2 :(得分:3)

使用chomp运算符。您还可以利用grep中的re代表正则表达式的事实来压缩您的命令:

chomp(my $num_firstbo = `ps efax 2>/dev/null | grep [f]irstbo | wc -l`);

通过匹配单例字符类,上面的命令匹配argv包含firstbo但不包含grep命令本身的进程。