Ваш
function git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1/'
}
- это своего рода хакерство для обработки текста, которое люди пишут, когда не знают таких вещей, как:
git rev-parse --abbrev-ref HEAD
Предполагая, что файл синтаксически правильный, вы можете отформатировать его с помощью отступа
и значительно упростить процесс поиска и извлечения функции:
отступом
, вы можете сделать имя функции в первом столбце строки, за которым следует левая скобка, и '} '
, появившееся в первом столбце, завершит функцию. Вот простой пример с использованием GNU отступа
и awk
:
#!/bin/sh
# $1 = file name
# $2 = function name
indent -st -orig "$1" | awk '
BEGIN { state = 0; last = ""; }
$0 ~ /^'$2'\(/ { print last; state = 1; }
{ if (state == 1) print; }
$0 ~ /^}/ { if (state) state = 2; }
{ last = $0; }
'
Если вам нужен только заголовок функции, вы можете использовать ctags
:
$ ctags -x foo.c
MyFunction 1 foo.c int MyFunction(int i) {