grep em um método Java

2

Digamos que eu tenha uma classe java chamada DirectAction

alguns dos métodos da classe têm a palavra "ação" ou "Ação"

Qual é o comando grep para obter os nomes de todos os métodos que possuem "Action" ou "action" e escrevê-los em um arquivo externo?

Exemplo:

public class DirectAction extends ERXDirectAction {

/**
 * 
 * @param aRequest
 */
public DirectAction(WORequest aRequest) {

}

// ============================================================================================
// ACTIONS

/**
 * Default Action
 * 
 */
@docDirectAction
public WOActionResults defaultAction() {

}

/**
 * @return goes to login page for student
 */
@docDirectAction
public WOActionResults studentAction() {
    );
    return nextPage;
}

/**
 * @return goes to Admin login page
 */
@docDirectAction
public WOActionResults adminAction() {
    return nextPage;
}

/**

 * @return calls the AdminAction
 */
@docDirectAction
public WOActionResults staffAction() {

    return adminAction();
}

}

Eu quero obter apenas a saída abaixo.

public class DirectAction extends ERXDirectAction

public DirectAction(WORequest aRequest)

public WOActionResults defaultAction()

public WOActionResults studentAction()

public WOActionResults adminAction()

public WOActionResults staffAction()

NOTA: a única palavra que é comum em todos esses métodos é "Ação" ou "ação"

Por favor, use apenas grep se possível:)

    
por gkmohit 28.05.2014 / 21:11

3 respostas

5

Se você quiser retornar apenas o texto correspondente (em vez da linha inteira), precisará do -o flag

grep -o 'public .*[a|A]ction.*)'

ou com expressões regulares estendidas

grep -Eo 'public .*[aA]ction.*\)' file

Ou, estendido para qualquer linha que comece com pub (lic), pri (vate) ou pro (tected)

grep -Eo '^(pub|pri|pro).*[aA]ction.*\)' file
    
por 28.05.2014 / 21:25
1

Não é grep , mas ...

sed -n '\|DirectAction|{/^@/n;/{/s|||;p}'

Retorna-me estes resultados:

public class DirectAction extends ERXDirectAction
public DirectAction(WORequest aRequest)
public WOActionResults defaultAction()
public WOActionResults studentAction()
public WOActionResults adminAction()
public WOActionResults staffAction()

Basicamente, apenas endereço linhas que contêm a frase DirectAction . Em seguida, verifico se o primeiro caractere na linha é um @ e, em caso afirmativo, sobrescrevo a linha atual com a linha n ext. Em seguida, procuro por um { e, se encontrado, removo-o. Então eu p rint.

    
por 28.05.2014 / 22:08
0
grep -i action( <file>

O -i torna o caso de pesquisa insensível, e eu adicionei o ( no final de action porque parece que todas as coisas que você espera ver têm um paren no final, mas você pode simplesmente sair sai.

Para registro, esse é o uso mais simples de grep que você encontrará; ler a man page teria revelado essa solução muito rapidamente.

    
por 28.05.2014 / 21:18