在makefile中,我们可以使用shell命令来完成这个任务。具体的步骤如下:
LINE_NUMBER = $(shell grep -n "target_string" file.txt | awk -F ":" '{print $$1}')
这个命令会使用grep找到包含目标字符串的行,并使用awk命令提取行号。结果会存储在变量LINE_NUMBER中。
$(info Line number is $(LINE_NUMBER))
LINE_NUM := $(LINE_NUMBER)
这样,我们就将行号存储到了LINE_NUM变量中。
完整的makefile示例代码如下:
target_string := your_target_string
file := your_file.txt
LINE_NUMBER := $(shell grep -n $(target_string) $(file) | awk -F ":" '{print $$1}')
$(info Line number is $(LINE_NUMBER))
LINE_NUM := $(LINE_NUMBER)
.PHONY: all
all:
@echo "Line number is $(LINE_NUMBER)"
以上代码中的"your_target_string"需要替换为要查找的目标字符串,"your_file.txt"需要替换为要查找的文件名。
请注意,这个方法只能找到第一个匹配的字符串所在的行号。如果要找到所有匹配的字符串所在的行号,可以使用grep命令的"-n"选项,并将结果存储在一个数组中。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云