在grep匹配模式输出行的前面打印文件名

时间:2019-04-03 22:16:10

标签: linux shell awk sed

我想将匹配模式的行内容从输入文件打印到输出文件。我正在使用:

    grep -hnr "pattern" ./input.txt > output.txt 

Output.txt文件类似于:

this line has the word pattern in it 

但是我想在输出文件的同一行中打印输入文件的名称。例如,我希望输出文件像这样:

input this line has the word pattern in it 

如果该模式在输入文件中多次匹配,我想多次打印文件名。例如:

input this line has the word pattern in it 
input this line also has same pattern

最后,我想在包含许多输入文件(* .txt格式)的目录中执行此操作,并生成一个包含所有结果的output.txt文件。

1 个答案:

答案 0 :(得分:0)

只需使用:

 grep -H "pattern" ./input.txt > output.txt 

来自man grep

  

-H,--with-filename
        打印每个匹配项的文件名。当要搜索多个文件时,这是默认设置。

     

-h,--no-filename
        在输出中禁止文件名的前缀。当只有一个文件(或只有标准输入)要搜索时,这是默认设置。