The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"быстро взять новые строки"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"быстро взять новые строки"  
Сообщение от Kurk_SS (ok) on 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 пропустить через сед указав в качестве скрипта модиф. стар. файл
получить нужный список.

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

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

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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "быстро взять новые строки"  
Сообщение от angra (ok) on 22-Дек-08, 23:05 
Ну ведь вроде все команды уже подсказали, неужели так лениво маны глянуть
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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "быстро взять новые строки"  
Сообщение от vic (??) on 23-Дек-08, 03:35 
>Ну ведь вроде все команды уже подсказали, неужели так лениво маны глянуть
>
>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. Очень распространенный формат однако ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "быстро взять новые строки"  
Сообщение от angra (ok) on 24-Дек-08, 18:10 
Если вам хочется извращаться, то пожалуйста, делайте в свое удовольствие, зачем только других этим озадачивать. Кстати ваша идея с sed на редкость идиотская.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

man comm

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "взяли брёвнышко, весело понесли"  
Сообщение от Andrey Mitrofanov on 22-Дек-08, 18:03 
>>коким методом можно быстро получить список строк которые есть в новом но
>>отсутствуют в старом?
>man comm

Пример для :))) плаги^Wподражания: http:/openforum/vsluhforumID3/46819.html#5 , там, где строка с comm.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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