파일의 특정 바이트 뒤에 줄을 삽입하는 방법

파일의 특정 바이트 뒤에 줄을 삽입하는 방법

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

관련 정보