将grep结果输出到文本文件,需要更清晰的输出

119

当使用Grep命令在一组文件中查找搜索字符串时,如何将结果转储到文本文件中?

此外,Grep命令是否有一个开关可以提供更清晰的结果以获得更好的可读性,例如在每个条目之间插入换行符或对齐文件名和搜索结果的方法?

例如,一种改变...

./file/path: first result
./another/file/path: second result
./a/third/file/path/here: third result
./file/path: first result

./another/file/path: second result

./a/third/file/path/here: third result

24
我喜欢这些真正有帮助的“不是一个真正的问题”的问题最终成为多年后谷歌搜索结果的前几名。 - Adrian Carr
3个回答

151
grep -n "YOUR SEARCH STRING" * > output-file

-n 会打印行号,> 将 grep 的结果重定向到输出文件。如果你想要“清洗”结果,可以使用管道符 | 进行筛选。例如:
grep -n "test" * | grep -v "mytest" > output-file 将匹配所有包含字符串“test”的行,但排除包含字符串“mytest”的行(这是开关 -v),并将结果重定向到输出文件。可以在这篇文章中找到一些有用的 grep 技巧。


11
grep 是一边处理内容一行行匹配,一边边读边写,还是只在完成时才写入输出文件?谢谢! - Crista23
6
单个 '>' 符号会覆盖输出文件中的内容吗?我们应该使用双个 '>>' 符号将结果追加到文件中,这样是不是更好? - GTodorov
3
好的,如果您想要追加内容,请使用 >> 符号。 - Nir Alfasi
20
对于未来的访问者,@Crista23的问题的答案是:当grep完成时,它会写入。 - HBeel
env | grep WSL >> test.txt - undefined

46

程序输出重定向是由 shell 执行的。

grep ... > output.txt

grep 没有为每个匹配项之间添加空行的机制,但提供了一些选项,例如匹配行周围的上下文和匹配项本身的着色。请参见 grep(1) 手册中的详细信息,特别是 -C--color 选项。


4

要在grep输出的文本行之间添加空白行以使其更易于阅读,可以使用管道符(|)将其传递到sed中:

grep text-to-search-for file-to-grep | sed G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接