我有一个很大的日志文件需要查看。所有不好的东西都是从错误字符串的某个出现开始的。然后我想看看最后一个X从该点开始检查行,看看是什么导致了该错误。我无法使用我最喜欢的文本编辑器打开该文件,因为它耗尽了机器上的所有 RAM。
我想也许我可以找到它所在的行,然后使用另一个实用程序从行中获取数据 X到线 是。 这可能吗?
答案1
您只需使用带有-A
and/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