ファイルの特定のバイトの後に行を挿入する方法

ファイルの特定のバイトの後に行を挿入する方法

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

強く打つ唯一の解決策:

分割コマンドを使用します。

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

関連情報