如何通过Vi或Gedit查看巨大的文本文件


24

我产生了wordlist.txt11 GB的crunch-3.6。尝试使用Vi或gedit打开文件时,由于文件大小,我遇到了问题。如何查看此文件?


8
我不认为这是重复的。尽管其密切相关且有一些答案可能会有所帮助,但这是关于查看而不是编辑的内容。接受的答案对查看没有帮助。
pLumo

1
我同意。查看文件和编辑文件不是同一回事,只有当文件很大时,区别才变得更加重要。
伊莱亚·卡根

Answers:


43

不要使用文本编辑器查看文本。

有更好的工具:


使用less(使用空格滚动,结束,首页,PageUp,PageDown滚动;使用“ / something”搜索;使用q离开)查看文件。

less手册:

Less不需要在启动之前读取整个输入文件,因此对于大输入文件,它的启动速度比诸如vi(1)之类的文本编辑器更快。

用法:

less wordlist.txt

考虑使用less -n

-n或--line-numbers:

禁止行号。在某些情况下,默认值(使用行号)可能会导致运行速度变慢,尤其是在输入文件非常大的情况下。使用该-n选项抑制行号可以避免此问题。

(感谢建议-n选项@pipe)


用于grep仅获取您感兴趣的行:

# Show all Lines beginning with A:
grep "^A:"  wordlist.txt

# Show all Lines ending with x and use less for better viewing
grep "x$"  wordlist.txt | less

使用headtail获取前n行

head wordlist.txt
tail -n 200 wordlist.txt

要编辑文本,请参阅此问题


4
请注意,这与more将整个文件加载到内存中不同less。如果这么大,我建议不要使用它。最好的选择肯定是使用grep
Nepho

1
我的评论实际上可能是错误的。据我所知,我开始同时检查源代码moreless源代码,两者似乎都使用openfopen,这对文件的加载方式没有任何改变
Nepho

2
同意 more是一个过时的实用程序,如果less可用的话,我认为您不会使用任何理由more
Nepho

1
@Nepho more在以下方面有一个巨大的优势less:它不支持LESSOPEN输入预处理器。如果您要查看手册页或其他内容的原始文本,键入内容more my_docs.man要比翻阅less文档找出如何抑制预处理程序要快得多。
标记

1
我建议调用使用类似less -nS的大型文件,加快速度一点。

10

通常,只需“ grep”就足以找到您需要的东西。

如果需要在特定行周围添加更多“上下文”,请使用“ grep -n”查找感兴趣行的行号,然后使用sed 该行周围打印文件的“块” :

$ grep -n 'word' file 
123:A line with with word in it 

$ sed -n '120,125p' file 
A line 
Another line
The line before
A line with with word in it 
The line after
Something else

10
不需要sed,您可以使用grep -B-A 打印行B
efore

7
@RoVo或-C对于C大块(之前和之后)。
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.