URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 38001
[ Назад ]

Исходное сообщение
"скрипт в шеле"

Отправлено denn , 02-Дек-03 19:00 
ребятки, как решить стандартными средствами такой вопрос на бсд.
есть два файла с адресами. в первом, примером 100, во втором 30.
первый включает вторые 30.
как бы сравнить эти файлы, что бы из первой сотни исключить вторые 30 адресов.
че та вечером не могу сообразить.
зарание и с уважением.

Содержание

Сообщения в этом обсуждении
"скрипт в шеле"
Отправлено Nikolaev_D , 02-Дек-03 19:22 
>ребятки, как решить стандартными средствами такой вопрос на бсд.
>есть два файла с адресами. в первом, примером 100, во втором 30.
>
>первый включает вторые 30.
>как бы сравнить эти файлы, что бы из первой сотни исключить вторые
>30 адресов.
>че та вечером не могу сообразить.
>зарание и с уважением.

cat file1 > file3
cat file2 >> file3
cat file3| sort | uniq > file4


"скрипт в шеле"
Отправлено denn , 02-Дек-03 19:28 
>>ребятки, как решить стандартными средствами такой вопрос на бсд.
>>есть два файла с адресами. в первом, примером 100, во втором 30.
>>
>>первый включает вторые 30.
>>как бы сравнить эти файлы, что бы из первой сотни исключить вторые
>>30 адресов.
>>че та вечером не могу сообразить.
>>зарание и с уважением.
>
>cat file1 > file3
>cat file2 >> file3
>cat file3| sort | uniq > file4

так остаеться одна копия. задача из 100 получить 70 (100-30)


"скрипт в шеле"
Отправлено Nikolaev_D , 02-Дек-03 20:09 
>>>ребятки, как решить стандартными средствами такой вопрос на бсд.
>>>есть два файла с адресами. в первом, примером 100, во втором 30.
>>>
>>>первый включает вторые 30.
>>>как бы сравнить эти файлы, что бы из первой сотни исключить вторые
>>>30 адресов.
>>>че та вечером не могу сообразить.
>>>зарание и с уважением.
>>
>>cat file1 > file3
>>cat file2 >> file3
>>cat file3| sort | uniq > file4
>
>так остаеться одна копия. задача из 100 получить 70 (100-30)

for i in `cat file2`;
do cat file1 | grep -v $i >> file3;
done

cat file3| sort | uniq > file4


"скрипт в шеле"
Отправлено viewn , 02-Дек-03 20:09 
>ребятки, как решить стандартными средствами такой вопрос на бсд.
>есть два файла с адресами. в первом, примером 100, во втором 30.
>
>первый включает вторые 30.
>как бы сравнить эти файлы, что бы из первой сотни исключить вторые
>30 адресов.
>че та вечером не могу сообразить.
>зарание и с уважением.

Что-нибудь такое?

#!/usr/local/bin/perl

@A=(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
@B=(2, 3, 5);
%seen=();
@only=();
foreach $item (@B) {
$seen{$item}=1;
}

foreach $item (@A) {
push(@only, $item) unless $seen{$item};
$seen{$item}=1;
}


"скрипт в шеле"
Отправлено denn , 02-Дек-03 20:15 
thx,
на перле и сам накатал, думал че та есть типа опции к diff и т.д,
а я туплю и не вижу.
спасибо, ваши предложения обязательно порулю.

"скрипт в шеле"
Отправлено viewn , 02-Дек-03 20:28 
>thx,
> на перле и сам накатал, думал че та есть типа опции
>к diff и т.д,
>а я туплю и не вижу.
>спасибо, ваши предложения обязательно порулю.

а если uniq -u(!!!)


"скрипт в шеле"
Отправлено denn , 03-Дек-03 10:09 
>>thx,
>> на перле и сам накатал, думал че та есть типа опции
>>к diff и т.д,
>>а я туплю и не вижу.
>>спасибо, ваши предложения обязательно порулю.
>
>а если uniq -u(!!!)
одна копия остаеться.


"скрипт в шеле"
Отправлено viewn , 03-Дек-03 12:41 
>>>thx,
>>> на перле и сам накатал, думал че та есть типа опции
>>>к diff и т.д,
>>>а я туплю и не вижу.
>>>спасибо, ваши предложения обязательно порулю.
>>
>>а если uniq -u(!!!)
>одна копия остаеться.

Не знаю, не знаю... У меня не остается.
Дело в том, что когда вы делаете
cat $file1 > $file3
cat $file2 >> $file3
Вы оба файла сливаете в один, в котором могут быть как дубликаты, так и уникальные значения.
а uniq -u (по ману) only print unique(!!!) lines
Так что cat $file3 | uniq -u > $file4
Все! Можно даже sort не делать.


"скрипт в шеле"
Отправлено denn , 03-Дек-03 12:44 
>>>>thx,
>>>> на перле и сам накатал, думал че та есть типа опции
>>>>к diff и т.д,
>>>>а я туплю и не вижу.
>>>>спасибо, ваши предложения обязательно порулю.
>>>
>>>а если uniq -u(!!!)
>>одна копия остаеться.
>
>Не знаю, не знаю... У меня не остается.
>Дело в том, что когда вы делаете
>cat $file1 > $file3
>cat $file2 >> $file3
>Вы оба файла сливаете в один, в котором могут быть как дубликаты,
>так и уникальные значения.
>а uniq -u (по ману) only print unique(!!!) lines
>Так что cat $file3 | uniq -u > $file4
>Все! Можно даже sort не делать.
thx, только уникалые, в смысле удаления дубликатов, то есть из двух остаеться один - уникальный.


"скрипт в шеле"
Отправлено viewn , 03-Дек-03 13:21 
>thx, только уникалые, в смысле удаления дубликатов, то есть из двух остаеться
>один - уникальный.

Блин...:(
Может у меня линукс совсем старый (РХ6.2), но у меня uniq -u делает именно ЭТО: записывает в резалт только те строки из файла1, которых нет в файле2. А тех строк, которые присутствуют и в файле1 и в файле2, в результирующем выводе НЕТ. И точка.


"скрипт в шеле"
Отправлено denn , 03-Дек-03 13:23 
>>thx, только уникалые, в смысле удаления дубликатов, то есть из двух остаеться
>>один - уникальный.
>
>Блин...:(
>Может у меня линукс совсем старый (РХ6.2), но у меня uniq -u
>делает именно ЭТО: записывает в резалт только те строки из файла1,
>которых нет в файле2. А тех строк, которые присутствуют и в
>файле1 и в файле2, в результирующем выводе НЕТ. И точка.

спасибо, брат, порулю внимательнее.


"скрипт в шеле"
Отправлено denn , 03-Дек-03 14:03 
>>>thx, только уникалые, в смысле удаления дубликатов, то есть из двух остаеться
>>>один - уникальный.
>>
>>Блин...:(
>>Может у меня линукс совсем старый (РХ6.2), но у меня uniq -u
>>делает именно ЭТО: записывает в резалт только те строки из файла1,
>>которых нет в файле2. А тех строк, которые присутствуют и в
>>файле1 и в файле2, в результирующем выводе НЕТ. И точка.

thx.