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
. 그런 다음 줄의 첫 번째 문자가 인지 확인하고 @
, 그렇다면 n
현재 줄을 다음 줄로 덮어씁니다. 다음으로 하나를 찾아보고 {
발견되면 삭제합니다. 그런 다음 p
인쇄합니다.
답변3
grep -i action( <file>
-i
검색 대소문자를 구분하지 않도록 하세요 . 보고 싶은 모든 항목의 끝에 괄호가 있는 것처럼 보이므로 (
끝에 추가했지만 생략할 수 있습니다.action
참고로 이것은 grep
맨 페이지를 읽으면 해결책을 빨리 알 수 있는 가장 간단한 사용법입니다.