Чтобы сопоставить номер строки определению функции, вам нужно будет перебрать исходный файл в поисках определений функции, а затем распечатать текущий, когда вы встретите целевой номер строки.Например, что-то вроде этого:
# look for function definitions and record the function name
# in the func_name variable. This looks for lines matching the pattern
# function <space> <identifier>(<anything>), and records the
# <identifier> part in func_name.
/function [[:alpha:]][[:alnum:]]* *([^)]*)/ {
func_name = $0
func_name = gensub("function *", "", 1, func_name)
func_name = gensub(" *\\(.*", "", 1, func_name)
}
# when we reach the target line number, print out the current
# value of func_name. In awk, the variable NR represents the
# current line number, and target is a variable we expect to be
# passed in on the command line.
NR == target {
print func_name
}
Если вы поместите это в файл с именем findline.awk
и назовете его так:
awk -f findline.awk -vtarget=26 mysourcefile.src
Затем будет напечатано имяфункция, которая содержит строку 26. Этот сценарий, как написано, не очень устойчив, но, надеюсь, даст вам некоторые идеи о том, как действовать.
См. документацию awk для получения подробной информации о * 1012.* функция.