【发布时间】:2017-07-17 12:38:42
【问题描述】:
我有一个名为“gao”的进程,进程的“grep”显示包括“awk”在内的两个进程。
ps aux | awk '/gao/{print}'
输出有两行,而我只想要一个包含“gao”的行。
vinllen 1205 100.0 0.0 2432780 652 s005 R+ 12:01PM 0:14.80 ./gao
vinllen 1271 0.0 0.0 2423460 232 s006 R+ 12:01PM 0:00.00 awk /gao/{print}
所以我想在这个 shell 脚本中插入“grep -v awk”。但我不知道我应该去哪个地方。尝试在“ps aux”之后插入这句话后,它起作用了。
vinllen@ ~/code/tmp/2017_07_17$ ps aux | grep -v awk | awk '/gao/{print}'
vinllen 1205 100.0 0.0 2432780 652 s005 R+ 12:01PM 2:39.12 ./gao
这让我很困惑,因为在我的理解中,第一个“ps aux”管道将输出所有进程,第二个“ps aux | grep -v awk”将输出除“awk”之外的所有进程,而第二个管道将再次引发一个带有“awk”的进程。所以我认为应该有两个过程,如下所示:
vinllen 1205 100.0 0.0 2432780 652 s005 R+ 12:01PM 0:14.80 ./gao
vinllen 1271 0.0 0.0 2423460 232 s006 R+ 12:01PM 0:00.00 awk /gao/{print}
谁能告诉我为什么?非常感谢。
【问题讨论】: