The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
diff - пропустить пару строк, !*! Алдр Бов, 11-Апр-21, 12:25  [смотреть все]
Добрый день всем!

Есть текстовый файлик на пару сотен тысяч строк, в который команда периодически вносит изменения. Делается ежесуточный бэкап всего этого, но для понимания суточных изменений решили хранить отдельно суточный diff. Есть небольшая проблема - иногда изменений нет нессколько дней, но каждый день программно в начало файла вносится дата. В результате, ежедевно ложится в хранилище пустой по смыслу дифф. Курил ман, искал в гугле - не нашёл, как можно пропустить 1-2 первых строки средствами diff-а? Подскажите, кто знает, плз. Пока удаляем строку с датой. Но мне кажется, это не правильно.

  • diff - пропустить пару строк, !*! Аноним, 13:26 , 11-Апр-21 (1)
    diff <(cat file1 | sed '1,2d') <(cat file2 | sed '1,2d')

  • diff - пропустить пару строк, !*! Licha Morada, 22:46 , 11-Апр-21 (5)
    > Есть небольшая проблема - иногда
    > изменений нет нессколько дней, но каждый день программно в начало файла
    > вносится дата. В результате, ежедевно ложится в хранилище пустой по смыслу
    > дифф.

    Почему же пустой по смыслу? Это железное свидетельство, что изменений не было. И весит копейки.
    Хотя, может быть, для вашей задачи это не релевантно.

    • diff - пропустить пару строк, !*! Алдр Бов, 09:37 , 12-Апр-21 (8)
      >> Есть небольшая проблема - иногда
      >> изменений нет несколько дней, но каждый день программно в начало файла
      >> вносится дата. В результате, ежедневно ложится в хранилище пустой по смыслу
      >> дифф.
      > Почему же пустой по смыслу? Это железное свидетельство, что изменений не было.
      > И весит копейки.
      > Хотя, может быть, для вашей задачи это не релевантно.

      Оно для нас особой нагрузки пока не несёт. А много мелких файлов забивают фс, и-ноды. Поэтому пока принят такой вариант решения.

  • diff - пропустить пару строк, !*! Ann None, 12:02 , 12-Апр-21 (10)
    > Добрый день всем!
    > Есть текстовый файлик на пару сотен тысяч строк, в который команда периодически
    > вносит изменения. Делается ежесуточный бэкап всего этого, но для понимания суточных
    > изменений решили хранить отдельно суточный diff. Есть небольшая проблема - иногда
    > изменений нет нессколько дней, но каждый день программно в начало файла
    > вносится дата. В результате, ежедевно ложится в хранилище пустой по смыслу
    > дифф. Курил ман, искал в гугле - не нашёл, как можно
    > пропустить 1-2 первых строки средствами diff-а? Подскажите, кто знает, плз. Пока
    > удаляем строку с датой. Но мне кажется, это не правильно.

    man diff:
    ...
           -I, --ignore-matching-lines=RE
                  ignore changes where all lines match RE
    ...

    читаю маны вслух с выражением. недорого.

    • diff - пропустить пару строк, !*! Алдр Бов, 13:31 , 12-Апр-21 (11)
      >[оверквотинг удален]
      >> вносится дата. В результате, ежедневно ложится в хранилище пустой по смыслу
      >> дифф. Курил ман, искал в гугле - не нашёл, как можно
      >> пропустить 1-2 первых строки средствами diff-а? Подскажите, кто знает, плз. Пока
      >> удаляем строку с датой. Но мне кажется, это не правильно.
      > man diff:
      > ...
      >        -I, --ignore-matching-lines=RE
      >            
      >   ignore changes where all lines match RE
      > ...

      И каким тут должен быть RE? К примеру:
      $ diff -a -I *04.2021*  $file$today $file$yesterday
      diff: extra operand `$file.$yesterday'
      diff: Try `diff --help' for more information

      > читаю маны вслух с выражением. недорого.

      Так и я могу прочитать. И уже раз пять перечитал, и об эту строчку спотыкался, но придумать-подобрать RE не смог.

      • diff - пропустить пару строк, !*! Ann None, 16:54 , 12-Апр-21 (12) +1
        > Так и я могу прочитать. И уже раз пять перечитал, и об
        > эту строчку спотыкался, но придумать-подобрать RE не смог.

        -I '.*04\.2021.*'

        зачитывание введения в регулярные выражения уже будет дороже.

        • diff - пропустить пару строк, !*! Алдр Бов, 19:40 , 12-Апр-21 (14)
          >> Так и я могу прочитать. И уже раз пять перечитал, и об
          >> эту строчку спотыкался, но придумать-подобрать RE не смог.
          > -I '.*04\.2021.*'

          А! Вот в каком ключе! Я не сообразил. :( Я про терминирование спецсимволов упустил, каюсь.

          > зачитывание введения в регулярные выражения уже будет дороже.

          Спасибо за волшебный пендель в правильную сторону!

        • diff - пропустить пару строк, !*! Аноним, 19:47 , 12-Апр-21 (15)
          В его кейсе нужно убирать дату только из первой строчки, а не из всего файла. Использование этого ключа может спрятать от диффа что-то важное, нельзя так делать.
          Новичков надо поражать инженерным умом, а не умением гуглить маны (это любая макака умеет).
          • diff - пропустить пару строк, !*! Алдр Бов, 11:25 , 13-Апр-21 (16)
            > В его кейсе нужно убирать дату только из первой строчки, а не
            > из всего файла. Использование этого ключа может спрятать от диффа что-то
            > важное, нельзя так делать.
            > Новичков надо поражать инженерным умом, а не умением гуглить маны (это любая
            > макака умеет).

            Не, всё нормально - я не смог сам правильно составить RE. Там не просто дата - ещё с реквизитами файла. Коллега своим примером подсказал, где я не так делал. Спасибо всем!

  • diff - пропустить пару строк, !*! vg, 12:03 , 16-Апр-21 (17)
    Использовать правильный инструмент для хранения текстогого файла, например Git, c добавлением наример git-commit-notifier, и получать сразу красиво оформленный диф по почте
    • diff - пропустить пару строк, !*! Алдр Бов, 17:27 , 16-Апр-21 (18)
      > Использовать правильный инструмент для хранения текстогого файла, например Git, c добавлением
      > наример git-commit-notifier, и получать сразу красиво оформленный диф по почте

      Спасибо, мы это рассматривали - до git-а мы ещё не доросли и вряд ли в ближайшей перспективе дорастём: не тот проект.

      • diff - пропустить пару строк, !*! vg, 22:29 , 16-Апр-21 (19)
        > Спасибо, мы это рассматривали - до git-а мы ещё не доросли и
        > вряд ли в ближайшей перспективе дорастём: не тот проект.

        Так это ... просто попробуйте, для этого сильно расти не надо. Даже тот же CVS уже больше Вам даст чем скрипт с диф. Гит просто удобнее и многие утилиты есть. И его использование не подразумевает наличие большого проэкта.

        Не надо поднимать сразу Гитлаб, или репозиторй где-то. Можно git+ssh для начали, с git-commit-notifier, мы с этим жили достаточно долго даже в большом проэкте. Linux+OpenSSH+Git+Ruby+git-commit-notifier+Postfix.

        Сразу появляются много плюсов как:
        - можно делать изменения несколькими людми одновременно. Конфликты конечно возникают, но все решаемо
        - можно сперва посмотреть изменения других, потом добавить свои
        - у каждого своя копия со всей историей, и еще и дифом
        - некоторые текстовые редакторы поддерживают гит из коробки (Atom например)
        - и многое другое ...

        Иногда походящий инструмент пугает

  • diff - пропустить пару строк, !*! pavlinux, 15:06 , 19-Апр-21 (20) +1
    > иногда изменений нет нессколько дней, но каждый день программно в начало файла
    > вносится дата. В результате, ежедевно ложится в хранилище пустой по смыслу дифф.

    Приходит к тебе начальник и говорит, " - скажи когда у нас не было изменений?"
    А ты, - опа,%"№"%4ъыыы*?(?%:омнономном(%;?дык,это,пррррр,вротмненоги.

    • diff - пропустить пару строк, !*! Licha Morada, 04:40 , 22-Апр-21 (21)
      >> иногда изменений нет нессколько дней, но каждый день программно в начало файла
      >> вносится дата. В результате, ежедевно ложится в хранилище пустой по смыслу дифф.
      > Приходит к тебе начальник и говорит, " - скажи когда у нас
      > не было изменений?"
      > А ты, - опа,%"№"%4ъыыы*?(?%:омнономном(%;?дык,это,пррррр,вротмненоги.

      Перед такими предостережениями надо писать "Осторожно, спойлеры!".





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

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