# 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那么\$是什么意思呢?它是正则表达式吗?
发布于 2015-06-19 08:37:45
是的,这是一种准则。$是一个正则字符,意思是“行尾”。因此,通过说grep safe\$,您就是在grep平所有名称以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"的。
https://stackoverflow.com/questions/30931591
复制相似问题