2008-11-15 9 views
3

Je voulais grep pour le processus java et ensuite trouver la mémoire max heap utilisée. Je essayéGrep grep un mot

def ex =['sh','-c','ps -aef | grep Xmx'] 
String str = ex.execute().text 

alors que str a quelque chose comme java -Xmx1024M/kv/classes/bebo/-Xms512m Comment puis-je extraire la valeur 1024M. Je prévoyais d'utiliser java regex mais je pensais que quelqu'un pourrait connaître une manière cool dans groovy.

Répondre

5

est ici une version groovy qui n'a pas besoin du grep (ou Sed :):

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

En Java:

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

Si tout ce que vous voulez est la valeur après Xmx, vous pourriez avoir que vous êtes revenu à partir de l'ex:

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

La commande sed transformera la sortie ps dans juste le bit qui sort de ps avant de revenir.

Questions connexes