Awk 从GREP结果保存整个文件

Awk 从GREP结果保存整个文件,awk,grep,cygwin,gnuwin32,Awk,Grep,Cygwin,Gnuwin32,好的,我在外置硬盘上使用grep 例如 M:/ grep -rhI "bananas" . > out.txt 它将输出“M:/”内包含“banana”的任何行 但是,我想输出文件的全部内容,因此,如果example.txt中的一行包含“bananas”,则输出example.txt的全部内容,对于目录“M:/”中包含“bananas”的任何其他.txt文件也是如此。要打印包含字符串bananas的任何文件名的内容,应该是: find . -type f -exec grep 'ban

好的,我在外置硬盘上使用grep

例如

M:/

grep -rhI "bananas" . > out.txt
它将输出“M:/”内包含“banana”的任何行


但是,我想输出文件的全部内容,因此,如果example.txt中的一行包含“bananas”,则输出example.txt的全部内容,对于目录“M:/”中包含“bananas”的任何其他.txt文件也是如此。

要打印包含字符串
bananas
的任何文件名的内容,应该是:

find . -type f -exec grep 'bananas' -l --null {} + | xargs -0 cat
上面使用GNU工具处理包含换行符的文件名


忘记您曾经见过任何递归查找文件的grep参数,将这些参数添加到gnugrep是一个糟糕的主意,只会使代码更加复杂。在文件中使用
find
查找文件和
grep
查找文件和g/re/p

您是否想过使用grep的“-l”选项输出文件名,并使用“xargs cat”传递此命令?它将输出所有文件的内容。至少,它可以在Linux上运行。我很好奇:为什么要引用
{}
?为了保持一致性,这似乎应该是
xargs“-0”“cat”“{}”
,但我认为您在任何情况下都只需要
xargs-0 cat
;不要经常使用该命令,因此不知道当文件名包含全局字符和空格时该命令的行为。你是对的,尽管我根本不需要`{},所以现在就把它移除,谢谢。