Заменить символы в файле на индекс - PullRequest
1 голос
/ 01 сентября 2009

Я ищу надежный способ заменить последовательность символов в текстовом файле. Я знаю, что файл всегда будет следовать определенному формату, и мне нужно заменить определенный диапазон символов (т. Е. Начать с символа 20, заменить следующие 11 символов на '#')

Я нашел несколько примеров использования sed и awk, которые выполняют это в большинстве файлов. Тем не менее, в моем случае зависание состоит в том, что диапазон символов в файле содержит случайные произвольные символы, включающие несколько символов NULL. Это приводит к тому, что файловые команды прекращают обработку.

Я знаю, что самым простым решением было бы перейти к процессу, который создает файл, а не заполнять файл NULL-символами. Однако файл создается процессом, похороненным в древнем COBOL, работающем на мэйнфрейме, и любые изменения там требуют почти акта конгресса.

Итак, зная, что я застрял с тем, что у меня есть, есть ли способ манипулировать файлом из командной строки, который может успешно перезаписать NULL-символы?

Заранее спасибо.

1 Ответ

4 голосов
/ 01 сентября 2009

GNU dd может сделать это

 echo '###########'|dd  of=FILENAME seek=20 bs=1 count=11 conv=notrunc

Убедитесь, что команда echo выдает достаточно символов для ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...