ps |之间的区别grep安全和ps | grep safe \ $

时间:2015-06-19 06:42:37

标签: linux grep openwrt

# ps  | grep safe
14592 root      136m S    /tmp/data/safe/safe
16210 root      1664 S    grep safe

# ps  | grep safe\$
14592 root      258m S    /tmp/data/safe/safe

那么\$意味着什么?这是正则表达式吗?

1 个答案:

答案 0 :(得分:1)

是的,这是一个正则表达式。 $是一个正则表达式字符,表示“行尾”。所以,通过说grep safe\$,您grep ping所有名称以safe结尾的行,并避免grep本身成为输出的一部分。

这里的问题是,如果您运行ps命令并输出grep,则会列出grep本身:

$ ps -ef | grep bash
me       30683  9114  0 10:25 pts/5    00:00:00 bash
me       30722  8859  0 10:33 pts/3    00:00:00 grep bash

通过说grep safe\$或其等效的grep "safe$",您将在匹配中添加一个正则表达式,使grep本身不显示。

$ ps -ef | grep "bash$"
me       30683  9114  0 10:25 pts/5    00:00:00 bash

有趣的情况是,如果您使用-F中的grep选项,它将匹配完全字符串,因此您将获得的唯一输出是grep本身:

$ ps -ef | grep -F "bash$"
me       30722  8859  0 10:33 pts/3    00:00:00 grep -F bash$

执行此操作的典型技巧是grep -v grep,但您可以在More elegant "ps aux | grep -v grep"中找到其他人。我喜欢那个说ps -ef | grep "[b]ash"的人。