我想grep for java進程,然後找到使用的最大堆內存。 我想這Groovy grep一個詞
def ex =['sh','-c','ps -aef | grep Xmx']
String str = ex.execute().text
而乙方擁有類似的java -Xmx1024M/KV /班/貝博/ -Xms512m 我如何提取價值1024M。我打算使用java正則表達式,但認爲有人可能知道一個很酷的方式在groovy。
我想grep for java進程,然後找到使用的最大堆內存。 我想這Groovy grep一個詞
def ex =['sh','-c','ps -aef | grep Xmx']
String str = ex.execute().text
而乙方擁有類似的java -Xmx1024M/KV /班/貝博/ -Xms512m 我如何提取價值1024M。我打算使用java正則表達式,但認爲有人可能知道一個很酷的方式在groovy。
下面是一個常規版本,不需要的grep(或sed的:):
("ps -aef".execute().text =~ /.*-Xmx([0-9]+M).*/).each { full, match -> println match }
在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之後才返回的位。