我有一个非常大的日志文件(6 gig)。
我想搜索“2012 年 11 月 12 日”并打印出每一行。
我是一个linux新手,不知道这是怎么做到的。很可能需要更多选项来查看 X 行并通过搜索继续前进。
grep --after-context=5 --before-context=10 'Nov 12 2012' yourfile.log
这将显示包含您的日期文本的每一行,以及匹配行之前的 10 行文本,以及匹配行之后的 5 行。
您可以使用grep
显示匹配的行和less
作为寻呼机:
grep 'Nov 12 2012' /path/to/logfile | less
在每页末尾键入“空格”以前进到下一个结果屏幕。
您可以grep
按如下方式使用:
grep 'Nov 12 2012' file_to_search.log > search_results.log
一些解释:
grep
是用于搜索模式的命令/工具的名称'Nov 12 2012'
: 紧随其后grep
并由至少 1 个空格分隔,您指定要搜索的模式file_to_search.log
:作为grep
此处的最后一个参数,您指定要搜索的文件> search_results.log
:>
表示输出重定向。这里它的意思是“将此命令的输出写入一个名为 的文件search_results.log
。如果该文件已经存在,则完全覆盖它。获得输出后,您可以使用您选择的文本编辑器或使用 来查看结果less
,因此请使用以下任何一种:
less search_results.log
gedit search_results.log
emacs search_results.log
vim search_results.log
以脚本格式打开文件,然后使用您要查找的关键字进行搜索,如下所示。
$vi <logfilename>
&
:/search
grep -A 5 -B 10 'Nov 12 2012' <yourfile.log>
-A <n>
查看n
之后-B <n>
的n
行和之前的行。或者,两者一起显示,-C <n>
即在搜索文本之前和之后显示n
行。
这是在大日志文件中定位错误的好方法: grep --after-context=5 --before-context=10 'Error' yourfile.log 或 grep --after-context=5 --before-context=10 '例外' yourfile.log