Java 方法上的 grep

Java 方法上的 grep

假设我有一个名为 DirectAction 的 java 类

类中的某些方法具有“action”或“Action”一词

获取所有具有“Action”或“action”的方法的名称并将其写入外部文件的 grep 命令是什么?

例子:

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();
}

}

我只想得到以下输出。

public class DirectAction extends ERXDirectAction

public DirectAction(WORequest aRequest)

public WOActionResults defaultAction()

public WOActionResults studentAction()

public WOActionResults adminAction()

public WOActionResults staffAction()

注意:所有这些方法中唯一常见的词是“Action”或“action”

如果可能的话,请仅使用 grep :)

答案1

如果您只想返回匹配的文本(而不是整行),则需要该-o标志

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

或使用扩展正则表达式

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

或者,扩展任何以 pub(lic)、pri(vate) 或 pro(tected) 开头的行

grep -Eo '^(pub|pri|pro).*[aA]ction.*\)' file

答案2

不过grep...

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

返回给我这些结果:

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

基本上我只处理包含短语的行DirectAction。然后,我检查该行的第一个字符是否是 an @,如果是,我用next 行覆盖当前行。接下来我寻找一个{,如果找到我将其删除。然后我p打印。

答案3

grep -i action( <file>

使-i搜索不区分大小写,我(在末尾添加了action,因为看起来您希望看到的所有内容末尾都有一个括号,但您可以将其省略。

根据记录,这是grep您会发现的最简单的用法;阅读手册页很快就会发现这个解决方案。

相关内容