【发布时间】:2012-11-02 06:36:49
【问题描述】:
我有一个非常大的日志文件(6 gig)。
我想搜索“2012 年 11 月 12 日”并打印出每一行。
我是 linux 新手,不知道这是如何完成的。很可能需要更多选项来查看 X 行并继续搜索。
【问题讨论】:
我有一个非常大的日志文件(6 gig)。
我想搜索“2012 年 11 月 12 日”并打印出每一行。
我是 linux 新手,不知道这是如何完成的。很可能需要更多选项来查看 X 行并继续搜索。
【问题讨论】:
您可以使用grep 显示匹配行,并使用less 作为寻呼机:
grep 'Nov 12 2012' /path/to/logfile | less
在每页末尾键入“空格”以前进到下一个结果屏幕。
【讨论】:
grep --after-context=5 --before-context=10 'Nov 12 2012' yourfile.log
这将显示包含您的日期文本的每一行,以及匹配行之前的 10 行文本和匹配行之后的 5 行。
【讨论】:
grep --after-context=5 --before-context=10 'Nov 12 2012' yourfile.log | tail -n 80 仅显示最后 5 次出现,包括之前的 10 行和之后的 5 行。 5*(1+10+5)=80
你可以使用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:> 表示输出redirection。这里的意思是“将此命令的输出写入一个名为search_results.log的文件。如果该文件已经存在,则完全覆盖它。获得输出后,您可以使用您选择的文本编辑器或less 查看结果,因此请使用以下任一选项:
less search_results.log
gedit search_results.log
emacs search_results.log
vim search_results.log
【讨论】:
以脚本格式打开文件,然后使用您要查找的关键字进行搜索,如下所示。
$vi <logfilename>
&
:/search
【讨论】:
这是在大型日志文件中定位错误的好方法:grep --after-context=5 --before-context=10 'Error' yourfile.log 或 grep --after-context=5 --before- context=10 'Exception' yourfile.log
【讨论】:
grep
grep -A 5 -B 10 'Nov 12 2012' <yourfile.log>
-A <n> 可查看 n 之后的行,-B <n> 可查看 n 之前的行。
或者,两者一起使用-C <n>,即在搜索文本之前和之后显示n 行。
【讨论】: