The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Редактирование большого файла, !*! microbash, 27-Май-10, 12:15  [смотреть все]
Как бы отредактирвоать большой файл (100Гб) ?
Требуется заменить один байт на другой по всему файлу.

Вроде может sed 's/1/4/g' test.log
Но он не сохраняет результат в исходном файле.

Хелп.

  • Редактирование большого файла, !*! 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
    на фре это не работает почемуто




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру