我被告知grep有外观支持。我试图在答案中用grep排除这一行,因为很明显这通常会在那里。我只想检查我的mysqld服务器基本上是否正常运行。
我正在尝试的正则表达式:
^(?!.*grep)(?=.*mysql).*
命令行。我试图匹配的顶线,我试图排除的底线。
root:~# ps aux | grep mysqld_safe
root 28012 0.0 0.1 4408 712 pts/0 S 18:00 0:00 /bin/sh /usr/bin/mysqld_safe
root 29167 0.0 0.1 9392 900 pts/1 S+ 20:51 0:00 grep --color=auto mysqld_safe
这是我的疑问:
# ps aux | grep '^(?!.*grep)(?=.*mysql).*'
(nothing)
答案 0 :(得分:2)
使用向前/向后看你需要为你的grep添加-P
选项(如果你的grep支持它)。因为PCRE支持他们。
在grep ps
输出时有一个常见的技巧,但想要排除grep
进程本身,例如:
ps -ef|grep [m]ysql
或
ps aux|grep [m]ysql
答案 1 :(得分:2)
就个人而言,我会选择
ps aux | grep -v grep | grep mysql
在#34; greping"之前排除了包含 grep 的行。对于 mysql
答案 2 :(得分:1)
您可以尝试awk
,
ps aux | grep mysqld_safe | awk '$12~"--color=auto" {next;} {print;}'
OR
ps aux | grep -oP '^(?!.*grep)(?=.*mysql).*'