中国开发网: 论坛: 程序员情感CBD: 贴子 598255
amo: 关于grep有趣的一个应用 zz
发信人: smallboy (smallboy@yjrg.net), 信区: Linux
标 题: [原创]关于grep有趣的一个应用
发信站: 一见如故 (Tue Jan 8 14:30:16 2008), 本站(yjrg.net)


关于grep有趣的一个应用,例如想查询ssh-agent进程的pid.
$ ps uwx | grep ssh-agent
* 8987 0.0 0.0 3136 968 ? S 13:16 0:00 ssh-agent
* 9177 0.0 0.0 4576 664 pts/5 S 14:16 0:00 grep ssh-agent
很遗憾,输出结果有grep这条语句相关的进程,查询man手册,
发现可以通过grep -v grep把这个结果滤去。
$ ps uwx | grep ssh-agent | grep -v grep
* 8987 0.0 0.0 3136 968 ? S 13:16 0:00 ssh-agent
不错吧,结果只有自己想要得ssh-agent了。
如果学习就停在这里的话,那很遗憾,shell命令你永远都只是一个初学者(好像有点
夸张),shell学习一定别忘记了regex(正则表达式),试试输入下面的命令会有什么结
果。
$ ps uwx | grep [s]sh-agent
* 8987 0.0 0.0 3136 968 ? S 13:16 0:00 ssh-agent
很奇怪吧,来认真分析一下就发现其中的秘密了。[s]sh-agent会匹配ssh-agent这
个没有问题(regex的初级知识),但是怎么没有匹配grep自己这条语句呢?
原因就是[s]sh-agent只会匹配含有ssh-agent这样的结果(注意:是ssh-agent,这里
ssh-agent中间没有别的符号了),而grep的语句是grep [s]sh-agent([s]sh-agent
中间含有一个']'符号,所以就没有办法),所以自然就
匹配不到了。

参考资料:
1.通用线程: OpenSSH 密钥管理,第 3 部分
http://www.ibm.com/developerworks/cn/linux/security/openssh/part3/#main

2. linux man docs(ps/grep)
oooO ↘┏━┓ ↙ Oooo
( 踩)→┃你┃ ←(死 )
\ ( →┃√┃ ← ) /
  \_)↗┗━┛ ↖(_/


相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录