如何找到第n个字符串的行号,打印并将其存储在makefile中的变量中?

时间:2019-06-17 19:29:12

标签: shell makefile

我正在尝试在大型文本文件中找到字符串“ 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的行号,但没有结果。

1 个答案:

答案 0 :(得分:2)

使用read从Make的输入中获取数据似乎是一个可怕的主意。但是,如果要执行此操作,则必须在读取它的同一shell中引用该变量。那就是:

FILENAME = list.txt
initial:
    @read choice; \
    awk '/PERSON/ && ++n == c {print NR; exit}' c="$$choice" $(FILENAME)