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。