The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
удаление строк в файле, !*! ncp, 12-Янв-07, 20:30  [смотреть все]
Друзья! Помогите сделать такую вещь:
Есть файл 1.txt и есть файл 2.txt
Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
  • удаление строк в файле, !*! Sergey, 20:34 , 12-Янв-07 (1)
    открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь 1 файл, берешь 2ую строку... и т.д.
    или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы... как получеться оптимальнее, решай сам... в разных ситуациях по разному... в одних нужна скорость, в других можно пренебречь, но поберечь ресурсы
    • удаление строк в файле, !*! ncp, 20:49 , 12-Янв-07 (2)
      >открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
      >1 файл, берешь 2ую строку... и т.д.
      >или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
      >как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
      >одних нужна скорость, в других можно пренебречь, но поберечь ресурсы


      Я не знаю, что такое массив. Если можно напишите проще. Еще вся ботва в том, что нужен скрипт, с помощью которого я могу делать эту операцию периодически. Это возможно?

    • удаление строк в файле, !*! redmoon, 22:03 , 12-Янв-07 (3)
      >открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
      >1 файл, берешь 2ую строку... и т.д.
      >или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
      >как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
      >одних нужна скорость, в других можно пренебречь, но поберечь ресурсы


      мужики,всем дарофф,не мучайте парня, пусть читает man grep, ,man awk

      • удаление строк в файле, !*! newser, 00:30 , 13-Янв-07 (4)
        >>открываешь доку по башу, заганяешь 1 строку 2го файла в массив, прогоняешь
        >>1 файл, берешь 2ую строку... и т.д.
        >>или заганяешь 2ой файл в массивы, и пропускаешь 1 файл через массивы...
        >>как получеться оптимальнее, решай сам... в разных ситуациях по разному... в
        >>одних нужна скорость, в других можно пренебречь, но поберечь ресурсы
        >
        >
        >мужики,всем дарофф,не мучайте парня, пусть читает man grep, ,man awk

        Кстати, если файлы можно сортировать, то еще проще: man sort и man comm.

        • удаление строк в файле, !*! Sergey, 00:54 , 13-Янв-07 (5)
          на баше можно загнать в массив, что бы баш делал автоотределения масива, тоже что и авк, но приетом значительно меньше памяти расходуеться и скорость выше... я в свое время етот вопрос обсасывал и пришел к такому выводу, что лучше на баше строить.

          man bash

          • удаление строк в файле, !*! newser, 01:25 , 13-Янв-07 (6)
            >на баше можно загнать в массив, что бы баш делал автоотределения масива,
            >тоже что и авк, но приетом значительно меньше памяти расходуеться и
            >скорость выше... я в свое время етот вопрос обсасывал и пришел
            >к такому выводу, что лучше на баше строить.
            >
            >man bash

            Ну нет у меня баша, хоть убейте! И не пользуюсь я им! И ставить ради подобных сомнительных преймуществ не стал бы, т.к. в данном случае задача единоразовая, и память для изложенных условий не критичный фактор. Уж лучше использовать более портабельный вариант (sed, awk, comm). Да и perl еще забыли упомянуть.

            P.S. Кстати, что так уперлись в массивы? Я уже изложил подход, который ВООБЩЕ не требует массивов, так что про "расход памяти" лучше помолчать. :)

  • удаление строк в файле, !*! ncp, 11:24 , 13-Янв-07 (7)
    Ладно. Спасибо всем. Буду читать маны. Только через них лежит путь к пониманию :) Благо что часть их на русском.
    • удаление строк в файле, !*! Duck, 14:24 , 13-Янв-07 (8)
      Странно, как это нет баша? Такого не встречал.
      На мой взгляд равноценно задача решается как на баше так и  на перрл, написать готовое решение не сложно, но принципиально то, что чел юзающий *никс должен такие задачи решать сам, это задачка для первокласника.

      • удаление строк в файле, !*! newser, 15:30 , 13-Янв-07 (9)
        >Странно, как это нет баша? Такого не встречал.

        Так а Вы, видать, кроме Linux никаких *nix систем и не знаете. :)
        Например, в *BSD нет bash, ставится из портов, если он нужен.
        К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...

        • удаление строк в файле, !*! Duck, 22:41 , 13-Янв-07 (11)
          >Так а Вы, видать, кроме Linux никаких *nix систем и не знаете.
          >:)
          да, да совершенно незнаю :) читая заголовок делаешь вывод, что чел юзает  линукс

          >Например, в *BSD нет bash, ставится из портов, если он нужен.
          >К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...
          >
          видимо у Вас какой-то специальный, заказной дистр BSD, что на нём есть всё что нужно.
          Почему-то мне пришлось 80% FreeBSD ставить из портов.

          • удаление строк в файле, !*! newser, 01:51 , 14-Янв-07 (15)
            >>Например, в *BSD нет bash, ставится из портов, если он нужен.
            >>К тому же, bash - это ДАЛЕКО не единственная оболочка, так что...
            >>
            >видимо у Вас какой-то специальный, заказной дистр BSD, что на нём есть
            >всё что нужно.
            >Почему-то мне пришлось 80% FreeBSD ставить из портов.

            Разговор шел о bash. В базовой установке FreeBSD его нет, есть в портах, но лично я им не пользуюсь, а потому не ставлю. :)

  • удаление строк в файле, !*! ncp, 17:20 , 13-Янв-07 (10)
    >Друзья! Помогите сделать такую вещь:
    >Есть файл 1.txt и есть файл 2.txt
    >Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
    >Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
    >Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
    >


    Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом случае. Вся операция выполняется с помощью команды comm.

    • удаление строк в файле, !*! Duck, 22:45 , 13-Янв-07 (12)
      >>Друзья! Помогите сделать такую вещь:
      >>Есть файл 1.txt и есть файл 2.txt
      >>Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
      >>Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
      >>Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
      >>
      >
      >
      >Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом
      >случае. Вся операция выполняется с помощью команды comm.

      а как удалять строки из файла 1.txt ? видимо одной комманды comm маловато.


      • удаление строк в файле, !*! Sergey, 00:00 , 14-Янв-07 (13)
        теоретически,можно , сделать выборку... и удалить файл (исходный) заменив полученым...
      • удаление строк в файле, !*! ncp, 00:46 , 14-Янв-07 (14)
        >>>Друзья! Помогите сделать такую вещь:
        >>>Есть файл 1.txt и есть файл 2.txt
        >>>Нужно удалить строки из файла 1.txt которые идентичны строкам из 2.txt
        >>>Другими словами нужно "вырезать" содержимое файла 2.txt из файла 1.txt
        >>>Файл 1.txt имеет около 1500 строк. Файл 2.txt имеет около 300 строк.
        >>>
        >>
        >>
        >>Мужики! Я разобрался! На самом деле не нужны никакие массивы в этом
        >>случае. Вся операция выполняется с помощью команды comm.
        >
        >а как удалять строки из файла 1.txt ? видимо одной комманды comm
        >маловато.


        При запуске без ключей команда comm выдает результат в три столбца.  Первый столбец
        содержит строки, уникальные для ФАЙЛА1, второй -- уникальные для
        ФАЙЛА2, а третий -- общие для обоих файлов строки.

        Есть следующие ключи:

          -1              не показывать строки, уникальные для ФАЙЛА1
          -2              не показывать строки, уникальные для ФАЙЛА2
          -3              не показывать строки, встреченные в обоих файлах

        Ставим ключи -2 и -3. На вывод получаем только строки уникальные для файла 1.txt
        Добавляем вывод в файл 3.txt и получаем в файле 3.txt отфильтрованный файл.

        В общем команда выглядит так comm -2 -3 1.txt 2.txt > 3.txt

        И ВСЕ!




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

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