包含数字

问题描述

我想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

我想从正在运行的进程中为“ psd_folr / rcerr-m-deve-udf-172 / bin / magt队列” 进行grep。 问题是数字172一直在变化,但是它只会是3位数字。请建议,我在下面尝试过,但未返回任何输出

sudo ps axu | grep "psd_folr/rcerr-m-deve-udf-'^[0-9]$'/bin/magt queue"

解决方法

正则表达式中最相关的部分是-'^[0-9]$'/,它存在以下问题:

  • 除了读撇号
  • ,撇号对grep没有句法含义
  • 插入符号^与行的开头匹配,但是ps的输出中此位置没有行的开头
  • 美元$与行尾匹配,但是ps在此位置的输出中没有行尾
  • 您想读取3位数字,但是[0-9]仅匹配一个数字

因此,应该像这样-[0-9]+/来修改表达式的部分,以匹配任意数量的数字(+匹配前一个字符多次,但至少匹配一次),或者像这样{{ 1}}精确匹配三遍(-[0-9]{3}/与前面的字符精确匹配{n}次)。

如果您更改命令,请给n grep标志,使其使用扩展的正则表达式,否则您需要转义加号或花括号:

-E