Groovy grep一个词

Groovy grep一个词,groovy,grep,Groovy,Grep,我想grep for java进程,然后找到使用的最大堆内存。 我试过这个 def ex =['sh','-c','ps -aef | grep Xmx'] String str = ex.execute().text 而str具有类似于java-Xmx1024M/kv/classes/bebo/-Xms512M的特性 如何提取1024M的值?我计划使用java正则表达式,但我想有人可能知道groovy中的一种很酷的方法。在java中: String ResultString = null;

我想grep for java进程,然后找到使用的最大堆内存。 我试过这个

def ex =['sh','-c','ps -aef | grep Xmx']
String str =  ex.execute().text
str
具有类似于java-Xmx1024M/kv/classes/bebo/-Xms512M的特性 如何提取1024M的值?我计划使用java正则表达式,但我想有人可能知道groovy中的一种很酷的方法。

在java中:

String ResultString = null;
Pattern regex = Pattern.compile("-Xmx(\\d+M)");
Matcher regexMatcher = regex.matcher(str);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
} 

如果您只需要Xmx之后的值,那么您可以从ex返回该值:

def ex =['sh','-c',"ps -aef | grep Xmx | sed -e 's/^.*Xmx\([0-9]*[mM]*\) *$/\1/'"]; 
String str = ex.execute().text;

sed命令将ps的输出转换为ps返回前输出的位。

这里有一个groovy版本,不需要grep(或sed:):

("ps -aef".execute().text =~ /.*-Xmx([0-9]+M).*/).each { full, match -> println match }