一尘不染

ps的grepping输出,排除单词grep

linux

我正在使用ps查找创建为执行命令“ sleep 1234&”的进程的pid,我将结果复制为仅匹配“ sleeping 1234”。

ps -A -f | grep "sleep 1234"

但是,它本身也与命令“ grep sleep 1234”匹配,返回两行而不是一行。如何为grep编写模式以排除单词“ grep”本身?

谢谢


阅读 290

收藏
2020-06-07

共1个答案

一尘不染

这是一个非常普遍的问题,最简单的解决方案是在grep’ed模式中用方括号括住一个字符:

ps -A -f | grep "[s]leep 1234"

现在,这将匹配sleep 1234,而不是[s]leep 1234(因为字面]之间slgrep的线,并且不再匹配)。

之所以grep在流程列表中,是因为流水线是从右到左执行的,因此grep实际上是在之前执行的ps

2020-06-07