如何获得第n个匹配项的行号?

Cat*_*ina 1 bash awk grep numbers line

假设我有以下文件:

* cat
* dog
* cat
* fish
* fish
* cat
* turtle
Run Code Online (Sandbox Code Playgroud)

假设我想找到第二次匹配cat的行号,该怎么做?

kar*_*kfa 6

$ awk '/cat/{c++} c==2{print NR;exit}' file
3
Run Code Online (Sandbox Code Playgroud)

数猫,打印行号,然后在所需的匹配值后退出。