36

我有一个非常大的日志文件(6 gig)。

我想搜索“2012 年 11 月 12 日”并打印出每一行。

我是一个linux新手,不知道这是怎么做到的。很可能需要更多选项来查看 X 行并通过搜索继续前进。

4

6 回答 6

91
grep --after-context=5 --before-context=10 'Nov 12 2012' yourfile.log

这将显示包含您的日期文本的每一行,以及匹配行之前的 10 行文本,以及匹配行之后的 5 行。

于 2012-11-13T19:33:31.157 回答
15

您可以使用grep显示匹配的行和less作为寻呼机:

grep 'Nov 12 2012' /path/to/logfile | less

在每页末尾键入“空格”以前进到下一个结果屏幕。

于 2012-11-13T19:33:18.343 回答
7

您可以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
于 2012-11-13T19:57:36.750 回答
4

以脚本格式打开文件,然后使用您要查找的关键字进行搜索,如下所示。

$vi <logfilename>
     &
:/search
于 2016-04-21T01:57:42.060 回答
2
grep -A 5 -B 10 'Nov 12 2012' <yourfile.log>

-A <n>查看n之后-B <n>n行和之前的行。或者,两者一起显示,-C <n>即在搜索文本之前和之后显示n行。

于 2018-03-27T20:11:02.760 回答
1

这是在大日志文件中定位错误的好方法: grep --after-context=5 --before-context=10 'Error' yourfile.log 或 grep --after-context=5 --before-context=10 '例外' yourfile.log

于 2017-04-13T13:39:00.647 回答