我想grep
在搜索 term 的文件夹上做一个 in bash foobar
。然后,我想输出所有匹配项以及找到匹配项的文件名和行号。这可能吗?
我需要输出看起来像:
{{filename}}:{{line_number}} - {{matched_text}}
grep -nrH 'regex' /dir/
-H
是添加文件名、-n
添加行号、-r
递归的选项
即使没有文件,我也会得到文件名,-H
除非只有一个文件。
添加-i
不区分大小写
添加-E
扩展正则表达式
使用 -n 或 --line-number 选项
grep -n foobar
是的; 尝试:
grep -nr "expression" /path/to/files/
awk
基于解决方案:
awk '/REGEX/{print FILENAME":"FNR" - "$0}' PATH
对于递归路径搜索,
find PATH-TO-START -type f -exec awk '/REGEX/{print FILENAME":"FNR" - "$0}' {} \;