小编Li-*_*Yip的帖子

Linux shell命令按行长过滤文本文件

我有一个 30gb 的磁盘分区(认为dd if=/dev/sda1 of=diskimage),我需要从中恢复一些文本文件。数据雕刻工具foremost只能处理具有明确定义的标题的文件,即不能处理纯文本文件,所以我依靠我的好朋友strings.

strings diskimage > diskstrings.txt 生成了一个 3gb 文本文件,其中包含一堆字符串,其中大部分是无用的东西,与我真正想要的文本混合在一起。

大多数垃圾往往是非常长的,不间断的胡言乱语。我感兴趣的东西保证小于16kb,所以我将按行长过滤文件。这是我用来执行此操作的 Python 脚本:

infile  = open ("infile.txt" ,"r");
outfile = open ("outfile.txt","w");
for line in infile:
    if len(line) < 16384:
        outfile.write(line)
infile.close()
outfile.close()
Run Code Online (Sandbox Code Playgroud)

这有效,但供将来参考:是否有任何神奇的单行咒语(想想awk, sed)可以按行长度过滤文件?

awk sed filter strings

19
推荐指数
2
解决办法
2万
查看次数

标签 统计

awk ×1

filter ×1

sed ×1

strings ×1