Вставьте байты в файл с помощью оболочки - PullRequest
0 голосов
/ 24 апреля 2019

Я хотел бы использовать оболочку linux (bash, zsh и т. Д.) Для вставки набора известных байтов в файл в определенной позиции. Аналогичные вопросы были заданы, но они изменяют на месте байты файла.Эти вопросы не касаются вставки новых байтов в определенные позиции.

Например, если мой файл имеет последовательность байтов, такую ​​как \x32\x33\x35, я мог бы захотеть вставить \x34 в позицию 2, чтобы эта последовательность байтовв файле становится \x32\x33\x34\x35.

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете достичь этого, используя head, tail и printf вместе. Например; вставить \x34 в положение 2 в file:

{ head -c 2 file; printf '\x34'; tail -c +3 file; } > new_file

Для соответствия POSIX можно использовать \064 (восьмеричное представление \x34).

Чтобы сделать это изменение на месте, просто переместите new_file на file.


Независимо от того, какой инструмент (ы) вы используете, эта операция будет стоить много времени ЦП для больших файлов.

...