Держите вот я написал вам такую утилиту:
#!/usr/bin/python3
def patch_file(patch_fn, dest_fn, offset=0, limit=None):
with open(patch_fn, 'rb') as patch_file, open(dest_fn, 'rb+') as dest_file:
patch = patch_file.read()[:limit]
dest_file.seek(offset)
dest_file.write(patch)
if __name__ == '__main__':
import sys
args = sys.argv[1:]
if args:
args[2:] = [int(v) for v in args[2:]]
print(args)
patch_file(*args)
else:
print(f'{sys.argv[0]} <PATCH_FILE_NAME> <DEST_FILE_NAME> [OFFSET] [LIMIT]')
print(' OFFSET by default is 0')
print(
' No LIMIT by default. You can use counting from end of patch file content to limit them. \n'
' For example LIMIT=5 will truncate 5 bytes of patch content\n'
' LIMIT=-5 cut last 5 bytes of patch content before patching.'
)
Сохраните в файл, например patch.py
Под линуксом нужно сделать
chmod +x patch.py
.
А под виндой можно запускать так:
python patch.py patch_file_name dest_file_name 33 -2
Заменит в dest_file_name все с 33 символа на содержимое patch_file_name за исключением двух последних символов патча. Последний и предпоследний параметры можно опустить.
Или использовать утилиту dd. Она стандартная и портирована под винду.