grep 进程中的路径(ps)包含数字
grep for path in process(ps) containing number
我想用 grep 查找具有变量的进程路径。例子 -
这是过程之一 运行.
/var/www/vhosts/rcsdfg/psd_folr/rcerr-m-deve-udf-172/bin/magt queue:consumers:start customer.import_proditns --single-thread --max-messages=1000
我想从 运行 进程中 grep 查找 "psd_folr/rcerr-m-deve-udf-172/bin/magt 队列"。
问题是数字 172 不断变化,但它只是一个 3 位数字。请建议,我在下面尝试过但没有返回任何输出。
sudo ps axu | grep "psd_folr/rcerr-m-deve-udf-'^[0-9]$'/bin/magt queue"
正则表达式中最相关的部分是 -'^[0-9]$'/
,它存在以下问题:
- 除了 read an apostrophe
,撇号对 grep 没有语法意义
- 插入符
^
匹配一行的开头,但是ps
的输出在这个地方没有一行的开头
- 美元
$
匹配一行的结尾,但是ps
的输出中没有一行的结尾在这个地方
- 您想读取 3 个数字,但
[0-9]
只会匹配一个数字
因此,您的表达式部分应像这样修改 -[0-9]+/
以匹配任意数量的数字(+
匹配前面的字符任意次数但至少一次)或像这样-[0-9]{3}/
精确匹配三次({n}
精确匹配前面的字符 n
次)。
如果你改变你的命令,给 grep
一个 -E
标志,以便它使用扩展的正则表达式,否则你需要转义加号或大括号:
sudo ps axu | grep -E "psd_folr/rcerr-m-deve-udf-[0-9]+/bin/magt queue"
我想用 grep 查找具有变量的进程路径。例子 - 这是过程之一 运行.
/var/www/vhosts/rcsdfg/psd_folr/rcerr-m-deve-udf-172/bin/magt queue:consumers:start customer.import_proditns --single-thread --max-messages=1000
我想从 运行 进程中 grep 查找 "psd_folr/rcerr-m-deve-udf-172/bin/magt 队列"。 问题是数字 172 不断变化,但它只是一个 3 位数字。请建议,我在下面尝试过但没有返回任何输出。
sudo ps axu | grep "psd_folr/rcerr-m-deve-udf-'^[0-9]$'/bin/magt queue"
正则表达式中最相关的部分是 -'^[0-9]$'/
,它存在以下问题:
- 除了 read an apostrophe ,撇号对 grep 没有语法意义
- 插入符
^
匹配一行的开头,但是ps
的输出在这个地方没有一行的开头 - 美元
$
匹配一行的结尾,但是ps
的输出中没有一行的结尾在这个地方 - 您想读取 3 个数字,但
[0-9]
只会匹配一个数字
因此,您的表达式部分应像这样修改 -[0-9]+/
以匹配任意数量的数字(+
匹配前面的字符任意次数但至少一次)或像这样-[0-9]{3}/
精确匹配三次({n}
精确匹配前面的字符 n
次)。
如果你改变你的命令,给 grep
一个 -E
标志,以便它使用扩展的正则表达式,否则你需要转义加号或大括号:
sudo ps axu | grep -E "psd_folr/rcerr-m-deve-udf-[0-9]+/bin/magt queue"