如何从大文件中提取文本,从第一次出现的字符串开始?

如何从大文件中提取文本,从第一次出现的字符串开始?

我有一个很大的日志文件需要查看。所有不好的东西都是从错误字符串的某个出现开始的。然后我想看看最后一个X从该点开始检查行,看看是什么导致了该错误。我无法使用我最喜欢的文本编辑器打开该文件,因为它耗尽了机器上的所有 RAM。

我想也许我可以找到它所在的行,然后使用另一个实用程序从行中获取数据 X到线 。 这可能吗?

答案1

您只需使用带有-Aand/or-B选项的“grep”即可。该-A开关将读取X错误后的行数,所以它可能就是你想要的,并且-B开关会读取X错误发生前的行数,因此你可以执行以下操作:

grep -A10 -B2 "要查找的字符串" /path/and/file.tofind

查找“要查找的字符串”之后的 10 行以及之前的 2 行。

或者——这可能是更糟糕的解决方案,您可以简单地使用“head”和“tail”来查找所需文件的第一部分和最后一部分;但这假设您知道行号。例如,如果您有一个长行文件,并且想要读取第 500-510 行,您可以尝试以下方法:

头 -510 /etc/file/to/search|尾 -10

这将首先提取文件的前 510 行,然后读取其中的最后 10 行。

答案2

获得一个新的“最喜欢的编辑器”。  vi不会将文件全部读入 RAM。

在 中,vi您可以通过输入/、要搜索的字符串和 来搜索字符串Enter。匹配的行将位于屏幕(窗口)的中间,因此您将能够看到大约 12 行之前和 12 行之后(如果您的窗口高 24 行)。当然,您可以向前或向后滚动以查看更多内容。按n查找 n字符串的扩展出现次数。

答案3

以下脚本将为您提供大文件的前 10 行和 10 列 cut -f1-10 -d' ' your_big_file| head -n10

相关内容