Shell

grep Java 方法

  • May 28, 2014

假設我有一個名為 DirectAction 的 java 類

類中的一些方法有“action”或“Action”這個詞

什麼是 grep 命令來獲取所有具有“Action”或“action”的方法的名稱並將其寫入外部文件?

例子:

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 :)

如果您只想返回匹配的文本(而不是整行),則需要-o標誌

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

或使用擴展的正則表達式

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

或者,擴展到任何以 pub(lic)、priv(vate) 或 pro(tected) 開頭的行

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

不是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 ,如果是,我用ext 行@覆蓋目前行。n接下來,我尋找一個{,如果找到,我將其刪除。然後我p沖洗。

引用自:https://unix.stackexchange.com/questions/132423