4

我想grep在搜索 term 的文件夹上做一个 in bash foobar。然后,我想输出所有匹配项以及找到匹配项的文件名行号。这可能吗?

我需要输出看起来像:

{{filename}}:{{line_number}} - {{matched_text}}
4

4 回答 4

9
grep -nrH 'regex' /dir/

-H是添加文件名、-n添加行号、-r递归的选项

即使没有文件,我也会得到文件名,-H除非只有一个文件。

添加-i不区分大小写

添加-E扩展正则表达式

于 2012-06-01T19:44:19.840 回答
3

使用 -n 或 --line-number 选项

grep -n foobar
于 2012-06-01T18:48:30.593 回答
1

是的; 尝试: grep -nr "expression" /path/to/files/

于 2012-06-01T18:48:05.900 回答
0

awk基于解决方案:

awk '/REGEX/{print FILENAME":"FNR" - "$0}' PATH

对于递归路径搜索,

find PATH-TO-START -type f -exec awk '/REGEX/{print FILENAME":"FNR" - "$0}' {} \;
于 2012-06-02T02:27:14.690 回答