从 grep 命令返回多个模式的单个实例

从 grep 命令返回多个模式的单个实例

我有一个返回数百行的命令的输出ps -ef,我需要 grep 查找一个几乎相同的模式(除了末尾的数字),并且返回每个模式的单个实例。例子:

这个特定的ps -ef命令输出几十行,每行包含字符串svc-0svc-5或 0 到 5 之间的任何数字,这些svc数字是随机分配的。如果我这样做,grep -Eo 'svc-[0-5]'它只会进行模式匹配并返回每一行的每个实例。我只需要确认svc-0和的存在svc-5。我希望的输出是:

svc-0
svc-5

我不能只-m2在 grep 中添加 an ,因为这些svc行通常会连续重复多次,例如:

svc-5
svc-5
svc-5
svc-5
svc-5
svc-0
svc-0
svc-0
svc-0
svc-0

答案1

您可以使用 awk 过滤器来查找两种所需的模式;如果两者都找到,则成功退出,否则以“失败”退出:

ps -ef ... | awk '/svc-0/ { zero++; } /svc-5/ { five++; } END { if (zero && five) exit 0; exit 1; }'

相关内容