【求解释】ps ag | egrep "正则',正则管道的问题
各位兄弟, 有个问题,帮忙解释一下
$ ps ag | egrep "watchwho$"
19603 pts/1 S+ 0:00 /bin/bash /home/me/bin/watchwho
19605 pts/1 S+ 0:00 /bin/bash /home/gavin/bin/watchwho
$ ps ag | egrep "watchwho"
19603 pts/1 S+ 0:00 /bin/bash /home/me/bin/watchwho
19605 pts/1 S+ 0:00 /bin/bash /home/me/bin/watchwho
20569 pts/2 S+ 0:00 egrep --color=auto watchwho
为什么用egrep 正则 "watchwho$" 匹配不显示下面这行呢?
20569 pts/2 S+ 0:00 egrep --color=auto watchwho
而下面这样却可以? 我猜测是管道| 命令的问题,兄弟们,你们怎么看?
$ ps ag | egrep "watchwho" > temp
$ cat temp | egrep "watchwho$"
19603 pts/1 S+ 0:00 /bin/bash /home/me/bin/watchwho
19605 pts/1 S+ 0:00 /bin/bash /home/me/bin/watchwho
20827 pts/2 S+ 0:00 egrep --color=auto watchwho
正则
egrep
shell
管道
grep
------解决方案--------------------应该不是这样的吧
ps ag
------解决方案-------------------- egrep "watchwho$"
对egrep的参数来说,输入是 watchwho
$
即这个时候ps看到的是 egrep --color=auto watchwho
$
显然这个时候不是满足egrep的匹配的,所以没列出来
ps ag
------解决方案-------------------- tee pslog
------解决方案-------------------- egrep "watchwho$"
lz可以用以上命令验证
------解决方案--------------------这整个命令去执行。
ps ag
------解决方案-------------------- egrep "watchwho$"
然后egrep "watchwho\$$"这样子的才会匹配到上面这个命令。
所以本身会除去了。
类似egrep "[w]atchwho"的形式一样,需要egrep "\[w\]atchwho"的方式才能把它grep出来。