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