如何在文件中的某些字节后插入一行

如何在文件中的某些字节后插入一行

假设我有一个大文件(几个演出),n其中有几行。我想k从文件开头在字节偏移后添加/插入一行,那么实现这一目标的最快方法是什么?

答案1

这是一个Python解决方案:

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
"""split_bytes.py"""

import os
import sys

stdout = os.fdopen(sys.stdout.fileno(), 'wb')

path_to_file = sys.argv[1]
width_in_bytes = int(sys.argv[2])

with open(path_to_file, "rb") as f:
    byte = f.read(1)
    while byte:
        for i in range(width_in_bytes):
            stdout.write(byte)
            byte = f.read(1)
        stdout.write(b"\n")

你可以像这样执行它:

python split_bytes.py path/to/file offset > new_file

作为测试,我生成了一个 1GB 的随机数据文件:

dd if=/dev/urandom of=data.bin bs=64M count=16 iflag=fullblock

然后在该文件上运行脚本:

python split_lines.py data.bin 10 > split-data.bin

答案2

A巴什唯一的解决方案:

使用分割命令:

split --lines=2 --suffix-length=6 /etc/passwd /tmp/split.passwd.part

将文件重新组合成一个新文件

(
  for F in /tmp/split.passwd.part* ; 
  do 
    cat $F ; 
    echo ; 
  done
) > /tmp/passwd_emptyline_evrey_2

相关内容