【发布时间】:2012-03-11 15:42:14
【问题描述】:
当我检查进程列表并“grep”出那些我感兴趣的进程时,grep 本身也包含在结果中。例如,列出终端:
$ ps aux | grep terminal
user 2064 0.0 0.6 181452 26460 ? Sl Feb13 5:41 gnome-terminal --working-directory=..
user 2979 0.0 0.0 4192 796 pts/3 S+ 11:07 0:00 grep --color=auto terminal
通常我使用ps aux | grep something | grep -v grep 来删除最后一个条目...但它不是优雅 :)
你有没有更优雅的 hack 来解决这个问题(除了将所有命令包装到一个单独的脚本中,这也不错)
【问题讨论】:
-
不管怎样,这是一个古老的常见问题解答。请参阅faqs.org/faqs/unix-faq/faq/part3 上的第 3.10 项
-
感谢您的参考。这就是他们的方法:
ps ux | awk '/name/ && !/awk/ {print $2}' -
grep -v grep部分在做什么? -
@Jwan622
grep -v grep从 grep 结果中排除grep。如果 grep 与 ps 结合使用,那么也会显示 grep 进程(带有 grep 参数),从而使结果混乱。 grep -v grep 是避免这种情况的常用方法