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

dee*_*392 7 linux text-editing

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

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

dav*_*dgo 12

您可以将“grep”与-A和/或-B选项一起使用。该-A交换机将读取X的错误后的行数,所以它可能是你想要的,而-B交换机将读取X线数量的错误之前,所以你会做这样的事情:

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

找到出现在“要查找的字符串”之后的 10 行,以及它之前的 2 行。

或者——这可能是一个更糟糕的解决方案,你可以简单地使用“头”和“尾”来找到你想要的文件的第一部分和最后一部分;但这假设您知道行号。即,如果您有一个很长的行文件,并且您想阅读第 500-510 行,您可以试试这个:

head -510 /etc/file/to/search | 尾巴-10

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

  • 如果不使用正则表达式模式,grep -F 将提供最佳性能。 (2认同)