- Редактирование большого файла, phpcoder, 12:18 , 27-Май-10 (1)
>Как бы отредактирвоать большой файл (100Гб) ? >Требуется заменить один байт на другой по всему файлу. > >Вроде может sed 's/1/4/g' test.log >Но он не сохраняет результат в исходном файле. В Linux сохраняет, если вызван с ключиком -i Но, ещё рекомендую попробовать тоже самое проделать с помощью Perl:
perl -pi -e 's|1|4|g' test.log (пишу по памяти) Есть вероятность, что Perl справиться с этим быстрее (плюс он более портабельный)
- Редактирование большого файла, microbash, 12:36 , 27-Май-10 (3)
>[оверквотинг удален] > >В Linux сохраняет, если вызван с ключиком -i > > >Но, ещё рекомендую попробовать тоже самое проделать с помощью Perl: > >perl -pi -e 's|1|4|g' test.log (пишу по памяти) > >Есть вероятность, что Perl справиться с этим быстрее (плюс он более портабельный) >Спасибо. Буду пробовать. А не подскажите мне как бы сначала найти все строки в файле по заданной последовательности? Хочетсья сначала посмотреть все строки, что буду редактировать.
- Редактирование большого файла, phpcoder, 12:38 , 27-Май-10 (4)
>А не подскажите мне как бы сначала найти все строки в файле >по заданной последовательности? Чтобы искать в файле, используйте grep. (А лучше даже fgrep, если ищете не по регулярному выражению.) Вот только не понял, что вы имели ввиду под "по заданной последовательности"?
- Редактирование большого файла, microbash, 16:02 , 27-Май-10 (6)
>>А не подскажите мне как бы сначала найти все строки в файле >>по заданной последовательности? > >Чтобы искать в файле, используйте grep. (А лучше даже fgrep, если ищете >не по регулярному выражению.) Вот только не понял, что вы имели >ввиду под "по заданной последовательности"? Помогите написать команду плз на sed: требуется в большом файле сделать замену (строка содержит кавычки, $ и пробелы) перед ENABLE двойной пробел, в других местах обычный было: ALTER TRIGGER "MAIL$_0" ENABLE стало: ALTER TRIGGER "MAIL$_0" ENOBLE
- Редактирование большого файла, microbash, 19:22 , 27-Май-10 (8)
>[оверквотинг удален] >>не по регулярному выражению.) Вот только не понял, что вы имели >>ввиду под "по заданной последовательности"? > >Помогите написать команду плз на sed: >требуется в большом файле сделать замену (строка содержит кавычки, $ и пробелы) > >перед ENABLE двойной пробел, в других местах обычный > >было: ALTER TRIGGER "MAIL$_0" ENABLE >стало: ALTER TRIGGER "MAIL$_0" ENOBLE Задача в целом следующая: довольно часто нужно подправлять дампы баз. дампы большие от 100гб. дампы бинарные. однако ручное подправление нужных байтов их не портит. нужно: 1) найти в файле нужное место, 2) подправить несколько байт, 3) найти это же место в файле и проверить, что исправление внесено. т.к. файлы большие и располагаются как правило на медленных рейдовых корзинках, то не хотелось бы чтобы утилита их копировала для своих нужд.
- grep и dd, Вова, 22:45 , 27-Май-10 (9)
>1) найти в файле нужное место, >2) подправить несколько байт, >3) найти это же место в файле и проверить, что исправление внесено. > > >т.к. файлы большие и располагаются как правило на медленных рейдовых корзинках, то >не хотелось бы чтобы утилита их копировала для своих нужд. сед и перл не подойдут в случае уже имеющихся дампов; вообще хорошо было бы при получении дампов пропускать через трубу, то есть хорошо было бы знать, что именно придётся подправлять, но если уже имеется 100гиговый файл на партиции в 101 гиг работать можно только через циклическое определение места правки через вызов grep -ab (трактовать текстом и писать байтовые смещения) и собственно редактирование при помощи dd с опциями seek смещение и notrunc.
- Редактирование большого файла, microbash, 12:32 , 27-Май-10 (2)
на линуксе работает с -i на фре это не работает почемуто
- Редактирование большого файла, phpcoder, 12:39 , 27-Май-10 (5)
>на линуксе работает с -i >на фре это не работает почемуто Потому что это не стандартная опция (читай: нет в POSIX), а в Линуксе сделана для удобства. (Я не спроста выше написал, что Perl более портабелен.)
- Редактирование большого файла, svn, 16:53 , 27-Май-10 (7)
>на линуксе работает с -i Работает создавая новый файл который в конце затирает источник. Не совсем то, что хотел автор...
|