有个 23GB 的 TXT,想搜索里面某特定字符,有什么快速办法?

2015-12-07 12:32:13 +08:00
 wuxiao2522
有个 23GB 的 TXT ,想搜索里面某特定字符,有什么快速办法?
3795 次点击
所在节点    问与答
30 条回复
pupboss
2015-12-07 12:35:12 +08:00
全部放到内存
lsmgeb89
2015-12-07 12:39:19 +08:00
grep 下?感觉有 UI 的编辑器 hold 不住哈
lshero
2015-12-07 12:42:22 +08:00
如果是一行一行的日志的话 切割成多份 一份一份的找
tracyone
2015-12-07 12:43:56 +08:00
grep ack ag perl …
hahasong
2015-12-07 12:46:53 +08:00
用 java 一行一行的读,写个循环
kokutou
2015-12-07 12:48:33 +08:00
winhex ...
wuxiao2522
2015-12-07 12:49:54 +08:00
@pupboss 没这么大内存的机器
@lsmgeb89 正准备这么做,找到这行数据后,有没有办法把这行数据的前后几百行一共拷贝出来呢?
@lshero 办法可行,有点麻烦。
@tracyone Linux 小白,参数具体意义?
@hahasong 不会 Java 。
Slienc7
2015-12-07 13:13:19 +08:00
随便什么语言 ReadLine
tracyone
2015-12-07 13:26:25 +08:00
@wuxiao2522 前三个是命令行程序,后面一个是脚本语言,都是用于文本查找的,特点和快慢有所不同,自己搜索下关键字和正则表达式
bk201
2015-12-07 13:27:03 +08:00
readline 只适合有换行符的吧,而且换行符的哪一行还得小。
按字节读取或者分割。
wuxiao2522
2015-12-07 13:32:13 +08:00
@kokutou 感谢,已经 winhex 搞定。
@tracyone 谢谢,已经解决了。
kxjhlele
2015-12-07 13:35:23 +08:00
sep 也可以把,
skydiver
2015-12-07 13:39:30 +08:00
前后两百行: grep -C 200 <strtofind> <filename>
dzxx36gyy
2015-12-07 13:44:41 +08:00
曾经我也纠结过怎么打开 23g 的某社工库 txt ……
abelyao
2015-12-07 13:53:42 +08:00
@dzxx36gyy 哪个库啊?
ryd994
2015-12-07 14:00:35 +08:00
read(n)不就好了么?
多少 G 都行啊
dzxx36gyy
2015-12-07 14:14:16 +08:00
@abelyao soyun
lululau
2015-12-07 14:25:14 +08:00
如果你能估计要检索出的结果在文件中的偏移量,或者文件是有序的,可以用二分查找之类的:

# 显示一个文件中从第 50G 个字节开始的长度为 1K 字节的内容
offset=$((50*1024*1024*1024-1))
length=1024
dd if=file_name bs=1 skip="$offset" count="$length" | grep regex

如果不是这个情况,那就搞不懂这个问题到底是啥意思了
xujif
2015-12-07 14:31:44 +08:00
grep --help 就可以满足了
ixiaozhi
2015-12-07 14:53:06 +08:00
23GB 的社工库么。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241681

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX