grep在bash中获取匹配文本的文件名和行号

时间:2012-06-01 18:46:13

标签: bash grep

我想在搜索术语grep的文件夹上使用bash foobar。然后,我希望输出所有匹配的文件名行号,其中找到了匹配项。这可能吗?

我需要输出看起来像:

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

4 个答案:

答案 0 :(得分:9)

grep -nrH 'regex' /dir/

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

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

为不区分大小写的

添加-i

为扩展正则表达式添加-E

答案 1 :(得分:3)

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

grep -n foobar

答案 2 :(得分:1)

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

答案 3 :(得分:0)

基于{p> awk的解决方案:

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

对于递归路径搜索,

find PATH-TO-START -type f -exec awk '/REGEX/{print FILENAME":"FNR" - "$0}' {} \;