我正在尝试在大型文本文件中找到字符串“ PERSON”的行号,并将结果存储到变量中以对其进行修改以供以后使用。在bash中,该行代码有效,但是在makefile中,则无结果。
我的参考资料来自此。 shell script to find the nth occurrence of a string and print the line number
.ONESHELL:
FILENAME = list.txt
initial:
@read choice
awk '/PERSON/{++n; if (n==$$choice) {print NR} exit}}' $(FILENAME)
我希望结果是选择的PERSON的行号,但没有结果。
答案 0 :(得分:2)
使用read
从Make的输入中获取数据似乎是一个可怕的主意。但是,如果要执行此操作,则必须在读取它的同一shell中引用该变量。那就是:
FILENAME = list.txt
initial:
@read choice; \
awk '/PERSON/ && ++n == c {print NR; exit}' c="$$choice" $(FILENAME)