grep для Java-метода

Допустим, у меня есть класс java под названием DirectAction

некоторые из методов в классе имеют слово «действие» или «действие»,

Что такое команда 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() 

ПРИМЕЧАНИЕ. Единственное слово, которое является общим во всех этих методах, – это «Действие» или «действие»,

Также, пожалуйста, используйте только grep, если возможно 🙂

4 Solutions collect form web for “grep для Java-метода”

Если вы хотите вернуть только соответствующий текст (вместо всей строки), вам нужен флаг -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 

Не 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 ext. Затем я искал { и, если нашел, я удаляю его. Тогда я p rint.

 grep -i action( <file> 

-i делает регистр поиска нечувствительным, и я добавил ( в конце action потому что кажется, что все вещи, которые вы ожидаете увидеть, имеют парн в конце, но вы можете просто отказаться от него.

Для записи это самое простое использование grep вы найдете; чтение справочной страницы показало бы это решение очень быстро.

  • exec с переменной filedescriptor
  • Как извлечь длинное поле для листинга?
  • Безопасно ли вводить другую команду в STDIN, пока предыдущая команда записывает в STDOUT?
  • Как эхо-переменные использовать cat в файл?
  • Сценарий оболочки не выполняется
  • Как избежать кавычек в оболочке как при использовании ssh, так и sudo?
  • Сохранение подзаголовка в фоновом режиме
  • Как использовать команду оболочки, чтобы показывать только первый столбец и последний столбец в текстовом файле?
  • если команда find -exec
  • Как открыть файл с заменой процесса из php?
  • Загрузите файл на сервер?
  • Linux и Unix - лучшая ОС в мире.