加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 18:37:19 所属栏目:Linux 来源:网络整理
导读:我有一个30gb磁盘映像的borked分区(想想dd if = / dev / sda1 of = diskimage)我需要从中恢复一些文本文件.像最重要的数据雕刻工具只能处理具有良好定义标题的文件,即不是纯文本文件,因此我已经回到了我的好朋友字符串上. strings diskimage diskstrings.txt
我有一个30gb磁盘映像的borked分区(想想dd if = / dev / sda1 of = diskimage)我需要从中恢复一些文本文件.像最重要的数据雕刻工具只能处理具有良好定义标题的文件,即不是纯文本文件,因此我已经回到了我的好朋友字符串上.

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()

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

解决方法

awk '{ if (length($0) < 16384) print }' yourfile >your_output_file.txt

将打印短于16千字节的行,如您自己的示例所示.

或者,如果你喜欢Perl:

perl -nle 'if (length($_) < 16384) { print }' yourfile >your_output_file.txt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读