如何从 grep 结果中减去 1

How to substract 1 from grep result

我正在编写一个 bash 命令,用于计算指定端口上的服务数量 运行。在我的例子中是 4092、4903、4904、4905。下面是我的命令:

ps -ef | grep '4905\|4904\|4903\|4902' | wc -l

输出:5

这里是“\|”作为 OR 运算符。现在它的结果是 5,因为它 greps 命令本身。如何从答案中减去 1,以便输出为 4。

您可以在打印匹配数之前删除包含结果本身的最后一行:

ps -ef  | grep '4905\|4904\|4903\|4902' | head -n -1 | wc -l

您可以保存 wc 并使用 awk 来获得预期的数字

ps -ef|grep ...|awk 'END{print NR-1}'

使用:

ps -ef  | grep '4905\|4904\|4903\|4902' | wc -l | awk '{print [=10=]-1}'