Bash pergunta de expressão regular

1

Estou usando

ps -ef | grep java | wc -l

para encontrar o número de processos Java em execução a qualquer momento.

O comando acima obviamente conta o comando "ps -ef | grep java" também no resultado.

Para evitar isso, descobri que poderia usar

ps -ef | grep [j]ava | wc -l

e funciona bem. No entanto, gostaria de descobrir o motivo pelo qual é possível ignorar o comando original dos resultados.

    
por Epitaph 17.06.2009 / 05:25

7 respostas

10

Porque quando você faz o [j] ava, o processo é chamado 'grep [j] ava'. '[j] ava' não combina com o regex '[j] ava' e, portanto, não aparece nos resultados.

    
por 17.06.2009 / 05:32
3

Quando você faz isso:

ps -ef | grep [j]ava | wc -l

você está usando o padrão [j]ava que corresponde a qualquer caractere único entre os colchetes (que consiste apenas na letra única j ) seguido imediatamente pelos caracteres ava . O próprio processo do grep não contém a letra j seguida imediatamente pelas letras ava , mas em vez disso, contém um colchete, depois j , depois um colchete de fechamento e, em seguida, ava .

Ou seja, o padrão não corresponde a si mesmo.

    
por 17.06.2009 / 06:12
2

Esta não é exatamente uma resposta para sua pergunta, mas ...

Outra forma comum de realizar o mesmo é:

ps -ef|grep java|grep -v grep|wc -l

Isso, claro, funciona fazendo um grep invertido no termo grep

    
por 17.06.2009 / 05:27
1

Você alterou o nome do processo do grep, para que ele não contenha mais o termo "java"

    
por 17.06.2009 / 05:39
1

Para acompanhar outras respostas, esperamos ajudar a esclarecer:

grep java corresponde a qualquer coisa que tenha java dentro dele.

grep java
java

grep [j] ava corresponde explicitamente a "java":

grep [j]ava <- There is no string "java" here so it does not match
java

    
por 17.06.2009 / 05:44
1

usa o comando pgrep?

    
por 18.06.2009 / 08:52
0

começando com o JDK 1.5, você tem o jps (linux / usr / lib / jvm / java-6-sun / bin / jps). Você pode usá-lo em todo o sistema operacional (linux, windows, solaris)

    
por 01.07.2009 / 10:03

Tags