4

Предположим, я знаю, что someFile.php содержит определение для someFunction() . Как бы я мог отобразить все тело функции в stdout? Если бы я знал, что тело имеет длину 10 строк, я бы использовал cat someFile.php | grep -A 10 "function someFunction" [1], но на самом деле функция может иметь любую произвольную длину.

Я подумал, что с sed я мог бы использовать команды Vimesque, такие как /function someFunction<Return>/{<Return>% [2], но я не могу понять, как именно его отформатировать. В идеале, PHPDoc перед функцией должен выводиться вместе с функцией.

Любая помощь или ссылки на соответствующее прекрасное руководство будет приветствоваться. Спасибо!

[1] Я знаю, что cat избыточна, но мне легче читать этот формат.

[2] Найти определение функции, перейти к открывающей фигурной скобке, перейти к закрытой фигурной скобке

1 ответ1

5

Определите регулярное выражение, которое встречается в конце функции, но не в ее теле.  ^} , вероятно, будет работать.

sed –n '/function someFunction/,/^}/p' someFile.php

Очевидно, что если PHPDoc перед функцией начинается с какой-то уникальной строки, вы бы использовали это вместо /function someFunction/ .  В противном случае это не так просто; это возможно с помощью awk .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .