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