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

Linux 在grep匹配模式输出行前面打印文件名,linux,shell,awk,sed,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 如果模式在输入文件中匹配多次,我想多次打印文

我想将匹配图案的线条内容从输入文件打印到输出文件。我正在使用:

    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文件。

只需使用:

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

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

-h、 --没有文件名
抑制输出时文件名的前缀。当只有一个文件(或只有标准输入)要搜索时,这是默认设置


只需执行
grep-hnr模式。/*.txt
。如果列出多个输入文件,默认情况下,grep将打印匹配的文件名。所有UNIX工具都有手动页面<代码>男士grep。