如何仅使用 bash grep 文件内容而不使用 find 或 grep -r?

如何仅使用 bash grep 文件内容而不使用 find 或 grep -r?

我想编写一个 bash 程序,如果我输入以下内容:

-bash-4.1$ ./sample.sh path regex keyword

这会导致类似的结果:

path/sample.txt:12

path/sample.txt:34

path/dir/sample1.txt:56

path/dir/sample2.txt:78

我完全不知道如何在 bash 中不使用 find 或 grep -r (但我可以使用 grep/ sed/ awk )的情况下实现这一目标...请帮助...

非常感谢!!

答案1

shopt -s globstar
awk '/search-string/ { print FILENAME ":" NR }' **/*

globstar启用递归通配符。NR保存当前行号。

相关内容