背景
现有 80+G 大文件,为时间顺序的日志内容,现需查询该文件是否包含某字符串,大概在文件中间位置,直接 grep
/ sed
均会导致 io util
飙升至 100%。
方案
可取方案
文件为时间顺序,且知道待查询字符串在的大概时间范围,可以将该时间范围的内容导出至新文件,再 grep
新文件
变种方案
可以不导出至新文件,而是在下面的 步骤 6
处键入 less
,直接在 mark a
与 mark b
之间搜索
废弃方案
grep
直接 grep
导致 io util
过高
sed
根据行号 sed
中间部分内容,也会导致 io util
过高
head + tail
待查询字符串大概在中间位置,不便 head
+ tail
步骤
less
文件- 使用
40p
跳到40%
位置,(如果文件过大取消计算行号后,下同)按m
再按a
打 a 标记 - 使用
45p
跳到45%
位置,(如果文件过大取消计算行号后,下同)按m
再按b
打b
标记 - 从标记
b
跳转到标记a
,按'
英文单引号加a
- 开始把中间部分写到新文件,先按竖线
|
,然后出现mark
按b
- 开始写文件,输入
dd of=/tmp/test.txt
- 稍等,完成,
/tmp/test.txt
就是中间部分内容了 grep xxx /tmp/test.txt
注:上面 40%
/ 45%
是因为要查的数据在这个范围内,a
/ b
mark
是随意取的名称