Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Поиск текста в бинарных файлах  (Прочитано 4326 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Поиск текста в бинарных файлах
« : 28 Января 2010, 14:51:45 »
Ищу программу, которая сопсобна найти текст в бинарных файлах по регулярному выражению, и (самое главное) - заменить в этой подстроке один символ, не тронув остальную структуру файла.

Текст - 11-ти значный номер, вида 43XXXXXXXXX, надо заменить на 42XXXXXXXXX, не тронув остальные цифры.
Или подскажите, как реализовать скриптом...

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #1 : 28 Января 2010, 15:22:23 »
а если тупо sed'ом?
sed 's|42xxxxxxx|43xxxxxxx|' filename > newfileэто если один раз встречается. если заменить повместно - добавляем g перед закрывающей 'кавычкой'.
не знаю, прокатит ли, но мало ли....
да, sed можно заставить издеваться только над заданной строкой. номер строки узнаем с помощью grep. но это уже разбираться надо...
лучше на "ты"

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #2 : 28 Января 2010, 15:29:51 »
В том то и дело, что он со строками работает. А тут бинарники. Файлов для поиска ~11000, примерно в семи из них будут вхождения, а уже в них (в найденных файлах) может быть до 15000 вхождений строки - столько и замен надо. Если тупо проверять - запаришься всё это добро по сети копировать. Поэтому и ищу готовые решения...
Да, и filename > newfile нежелательно. Папка с файлОм не один гиг занимает... :(
« Последнее редактирование: 28 Января 2010, 15:31:36 от ploop »

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #3 : 28 Января 2010, 16:15:19 »
мда... изнасиловал таким способом png'шник. херится.
вспомнил вот что - был такой забавный способ конвертирования из vob в mpeg2 - в HEX-редакторе стоило заменить несколько фрагментов. мб стоит посмотреть в эту сторону...
лучше на "ты"

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #4 : 28 Января 2010, 16:19:03 »
HEX-редактор говорите... Если б знать, какие именно файлы открывать...

Пока одна мысль: написать прогу на лазарусе (благо знаю хорошо), всё быстрей отработает, чем скрипт... Вот только алгоритмы поиска знать бы. "Тупо в лоб" - и до 2012го не прочешет...

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #5 : 28 Января 2010, 16:58:09 »
Цитировать
real   0m39.482s
user   0m2.076s
sys   0m17.313s
>16:54:14 028 ~$ time grep -a "5#%" downloads/livecd.iso
iso-шник на гигабайт. впрочем, это когда один большой файл. стопиццот мелких - другое дело. но... не так уж все это и нескончаемо.
запущаем что-то типа
grep -aRls "что" /где > file.listи можно идти пить чай. на выходе получаем список файлов, содержащих искомое. а уже на них надо будет натравливать скрипт или что там еще с ними делать

UPD:
Цитировать
real   0m39.743s
папка в 1гиг весом, в ней 1365 джыпегов.
« Последнее редактирование: 28 Января 2010, 17:03:47 от dimas000 »
лучше на "ты"

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Поиск текста в бинарных файлах
« Ответ #6 : 28 Января 2010, 19:13:44 »
Спасибо, завтра буду пробовать.

Кстати, это файлы старой БД clarion, есть возможность перегнать их в DBF. Тогда задача упрощается.

 

Страница сгенерирована за 0.036 секунд. Запросов: 23.