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 :)
如果只想返回匹配的文本(而不是整行),则需要-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)