Perl 执行带有计数行的 pgrep

标签 perl count pipe ps

我在使用 pgrep 和 wc 命令时遇到问题。我发现 2 行我只期望 1 行。

my $test = `pgrep -f 'blabla'`;
print $test;    <------ print the good PID (only one)

my $test = `pgrep -f 'blabla'|/usr/bin/wc -l`;
print $test;  <------- print 2 and a carriage return

我发现在管道之前插入了一个回车符,所以 wc 算作 2 行。 有没有办法在管道之间做一个中间 chomp() ? 谢谢你的帮助

最佳答案

pgrep 在您使用管道时匹配自身。如果您通过管道输入 cat 而不是 wc,则可以验证这一点。您可以通过像这样添加一些大括号来避免这种情况,这样模式就不再匹配自身。

my $test = `pgrep -f '[b]labla' | /usr/bin/wc -l`;

关于Perl 执行带有计数行的 pgrep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433927/

相关文章:

windows - 从具有不同事件 perl 版本的另一个 perl 脚本调用 perl 函数

postgresql - 无法使用 DBIx::Class::Schema::Versioned 创建非虚拟 View

perl - 如何在没有竞争条件的情况下通过管道传输到同一个临时文件句柄并从中读取?

MySQL 查询零值

arrays - 查询数组中索引范围 i,j 中 A[i],A[j] 范围内的值

c++ - 加工和管道

perl - 在 Perl 中用空格连接字符串。有内置插件吗?

mysql - 选择并统计所有条目并根据条目进行分组

python - 使用 python subprocess.check_output 进行实时管道或解决方法?

PowerShell 错误?无法通过管道将 ComputerName 属性传递给 Get-Service(按值和按属性名称混合)