我有一个非常大的日志文件(6 gig)。
我想搜索2012年11月12日'并打印每一行。
我是Linux新手,不知道如何做到这一点。很可能需要更多选项才能查看X行数并继续搜索。
答案 0 :(得分:74)
grep --after-context=5 --before-context=10 'Nov 12 2012' yourfile.log
这将显示包含日期文本的每一行,以及匹配行之前的10行文本,以及匹配行之后的5行。
答案 1 :(得分:13)
您可以使用grep
来显示匹配的行,并使用less
作为寻呼机:
grep 'Nov 12 2012' /path/to/logfile | less
在每页末尾输入“空格”以前进到下一个结果屏幕。
答案 2 :(得分:6)
您可以按如下方式使用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
答案 3 :(得分:3)
以脚本格式打开文件,然后使用您要查找的关键字进行搜索,如下所示。
$vi <logfilename>
&
:/search
答案 4 :(得分:1)
这是在大型日志文件中查找错误的好方法:grep --after-context = 5 --before-context = 10'Error'yourfile.log或grep --after-context = 5 --before- context = 10'例外'yourfile.log
答案 5 :(得分:0)
grep -A 5 -B 10'2012 11月12日'yourfile.log
-n n表示n行AFTER,-n n表示n行之前。
或两者一起 - 在搜索文本之前和之后的C n,n行。