在 Java 方法上使用 grep

gkm*_*hit 3 shell grep scripting java shell-script

假设我有一个名为 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();
}
Run Code Online (Sandbox Code Playgroud)

}

我只想获得以下输出。

public class DirectAction extends ERXDirectAction

public DirectAction(WORequest aRequest)

public WOActionResults defaultAction()

public WOActionResults studentAction()

public WOActionResults adminAction()

public WOActionResults staffAction()
Run Code Online (Sandbox Code Playgroud)

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

另外,如果可能,请仅使用 grep :)

ste*_*ver 5

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

grep -o 'public .*[a|A]ction.*)'
Run Code Online (Sandbox Code Playgroud)

或使用扩展的正则表达式

grep -Eo 'public .*[aA]ction.*\)' file
Run Code Online (Sandbox Code Playgroud)

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

grep -Eo '^(pub|pri|pro).*[aA]ction.*\)' file
Run Code Online (Sandbox Code Playgroud)