The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
быстро взять новые строки, !*! Kurk_SS, 22-Дек-08, 17:28  [смотреть все]
есть два файла новый и старый... в каждом по 1000 строк гдето...

коким методом можно быстро получить список строк которые есть в новом но отсутствуют в старом?

строки которые есть в старом но нету в новом не интересуют. эти строки - это имена файлов, вот чтоб не качать файлы заново все, имея списка два выбрать те что появились.
олько вот что ешо. Список файлов это насомом деле строки где через "," много чего, имя файла во второй позиции...

у меня вариан был только реализовать чтото не получаеться....
всмысле мысли в голове путаються

less file.new | awk -F, '{print $2}' > .new
less file.old | awk -F, '{print $2}' > .old

sed ..... .old > old старый файл пропустить через сед, чтобы он из "имя" --> "/имя/d"                                                                                 получили файл команд для седа на удаление таких строк
sed -f old .new пропустить через сед указав в качестве скрипта модиф. стар. файл
получить нужный список.

всё хорошо только вот в именах файла есть точка которую нужно както экранировать и както довставить слеши

  • быстро взять новые строки, !*! Pahanivo, 17:36 , 22-Дек-08 (1)
    нихеранепонятночетысказалномывседружнопосочуствовалиможетвследущийразтыхотябыудосужишсьяпривестипримерыфайлов


    • быстро взять новые строки, !*! Kurk_SS, 22:57 , 22-Дек-08 (4)
      >нихеранепонятночетысказалномывседружнопосочуствовалиможетвследущийразтыхотябыудосужишсьяпривестипримерыфайлов

      :)
      не буду грузить своими вариантами просто задача....

      структура этих файлов

      id_clip,file_name.avi,flag,count,prefix,postfix,date,time,limit,ok
      и таких под 1000 строк, имена файлов(file_name.avi) нас и интересуют.
      вот папка с файлами авишками, сопровождаеться файлом описания, его структура выше.

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


      • быстро взять новые строки, !*! angra, 23:05 , 22-Дек-08 (5)
        Ну ведь вроде все команды уже подсказали, неужели так лениво маны глянуть
        awk -F "," '{print $2}' list_old| sort> list_names_old
        awk -F "," '{print $2}' list_new| sort> list_names_new
        for i in $(comm -1 -3 list_names_old list_names_new); do cp "$i" /path/to/flash/; done

        • быстро взять новые строки, !*! vic, 03:35 , 23-Дек-08 (6)
          >Ну ведь вроде все команды уже подсказали, неужели так лениво маны глянуть
          >
          >awk -F "," '{print $2}' list_old| sort> list_names_old
          >awk -F "," '{print $2}' list_new| sort> list_names_new
          >for i in $(comm -1 -3 list_names_old list_names_new); do cp "$i" /path/to/flash/;
          >done

          Кстати, еще есть утилита cut, таким образом первые две строки в этом решении могут быть такими:
          cut -d',' -f2 list_old | sort -u > list_names_old
          cut -d',' -f2 list_new | sort -u > list_names_new

          ну это уже дело вкуса конечно :)

          ЗЫ автору топика, судя по всему файлы в формате CSV, т.е. достаточно было сказать об этом в самом начале, на будущее почитайте http://en.wikipedia.org/wiki/Comma-separated_values и обратите внимание на ссылку на rfc. Очень распространенный формат однако ;)

          • быстро взять новые строки, !*! Kurk_SS, 11:02 , 23-Дек-08 (7)
            >>Ну ведь вроде все команды уже подсказали, неужели так лениво маны глянуть

            не лень, и глянул... точнее знал даже про комм... из головы вылетела, а просто несмог без ответа оставить человека с чувством юмора, которому задача не ясна.

            а вообще и польза есть, вот про КАТ узнал...
            вот только одно интерестно ... зачем -1 -3 флаги.... ведь третья колонка это строки которые есть и там и там, а мне нужно только -2... колонка строк, которые есть только во втором файле.... или я что-то путаю?


            • быстро взять новые строки, !*! vic, 22:08 , 23-Дек-08 (9)
              >[оверквотинг удален]
              >
              >не лень, и глянул... точнее знал даже про комм... из головы вылетела,
              >а просто несмог без ответа оставить человека с чувством юмора, которому
              >задача не ясна.
              >
              >а вообще и польза есть, вот про КАТ узнал...
              >вот только одно интерестно ... зачем -1 -3 флаги.... ведь третья колонка
              >это строки которые есть и там и там, а мне нужно
              >только -2... колонка строк, которые есть только во втором файле.... или
              >я что-то путаю?

              cat и cut это две разные утилиты :)

              флаги для comm говорят не какие строки выводить, а какие строки подавлять.

              ps скорость для файла в 1000 строк мерить смысла нет, разница на уровне погрешности измерения, вот если там будет 1Gb данных, тогда будет заметно.

          • быстро взять новые строки, !*! Kurk_SS, 11:06 , 23-Дек-08 (8)
            кстате я говорил ещё оскорости работы... вообщем хочу реализовать все варианты

            awk sort comm
            cat sort comm
            awk (for string in newfile grep oldfile)
            кстате никто не подскажет, хотелось бы и с седом вариант попробовать
            как седом это всё сделать
            тоесть из старого файла сделать набор правил на удаление строк по шаблону, и потом новый файл прогнать по этим правилам, результат остануться одни "новинки.ави"

            результаты теста скорости потом напишу :)

  • быстро взять новые строки, !*! Hetzer, 17:38 , 22-Дек-08 (2)
    >есть два файла новый и старый... в каждом по 1000 строк гдето...
    >
    >
    >коким методом можно быстро получить список строк которые есть в новом но
    >отсутствуют в старом?
    >

    man comm




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

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