要在Makefile中找到第n个字符串的行号并打印存储到一个变量中,可以使用以下步骤:
假设我们有一个文本文件 data.txt
,内容如下:
apple
banana
cherry
date
elderberry
fig
grape
我们希望找到第3个字符串(即 "cherry")的行号,并将其存储到Makefile中的一个变量中。
# 定义文件名和目标行号
FILE = data.txt
N = 3
# 使用shell命令找到第n个字符串的行号
LINE_NUMBER := $(shell awk 'NR==$(N){print NR}' $(FILE))
# 打印行号
print-line:
@echo "The line number of the $(N)th string is: $(LINE_NUMBER)"
# 存储到变量中
STORE_LINE:
@echo "LINE_NUMBER=$(LINE_NUMBER)" > line_number.txt
FILE
是包含字符串的文件名。N
是目标字符串的行号。awk
命令:awk 'NR==$(N){print NR}' $(FILE)
会找到第 N
行并打印其行号。NR
是 awk
中的内置变量,表示当前处理的行号。print-line
目标会执行 echo
命令,打印找到的行号。STORE_LINE
目标会将行号写入 line_number.txt
文件。在终端中运行以下命令:
make print-line
make STORE_LINE
line_number.txt
文件中。awk
命令会报错。N
超出文件的实际行数,awk
不会输出任何内容。通过以上步骤和示例代码,可以在Makefile中有效地找到第n个字符串的行号并进行相应的处理。
领取专属 10元无门槛券
手把手带您无忧上云