сбор значений из 2-х списков

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mmvds
мл. сержант
Сообщения: 92
Зарегистрирован: 2011-01-26 17:24:07

сбор значений из 2-х списков

Непрочитанное сообщение mmvds » 2012-08-03 8:41:10

Есть собранная инфа по snmp о модели устройства
Проблема в том что snmp на устройствах разные, где-то есть одно комьюнити, где-то другое, где-то и то и другое, а гдето ни того ни другого.
В итоге в есть 2 списка вида ip|модель_устройства
там где есть первое комьюнити - есть модель устройства в первом списке, там где его нет, значение после Ip пустое, во втором списке соответственно наоборот
так вот, хочу сделать единый список, включающий инфу по всем устройствам, если инфы нет ни в том ни в другом списке, все-равно добавить эту пустую запись или как то ее пометить.
например
Есть
lst1.txt
10.1.2.1|model 1
10.1.2.2|
10.1.2.3|model 2
10.1.2.4|
10.1.2.5|model 1
10.1.2.6|
И
lst2.txt
10.1.2.1|model 1
10.1.2.2|model 2
10.1.2.3|
10.1.2.4|
10.1.2.5|model 1
10.1.2.6|model 3

хочу получить
lst3.txt
10.1.2.1|model 1
10.1.2.2|model 2
10.1.2.3|model 2
10.1.2.4|
10.1.2.5|model 1
10.1.2.6|model 3
или
lst3.txt
10.1.2.1|model 1
10.1.2.2|model 2
10.1.2.3|model 2
10.1.2.4|nosnmp
10.1.2.5|model 1
10.1.2.6|model 3

пробовал join'ом, не сообразил как

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: сбор значений из 2-х списков

Непрочитанное сообщение kpp » 2012-08-03 11:36:04

Код: Выделить всё

sort -u -r lst1.txt lst2.txt | sort -t"|" -u +0 -1 > lst3.txt
join в данном случае не подходит.
Я уже как-то высказывался на счет join - утилита полезная, но в ней нехватает как минимум возможности задать отличный от пробела символ разделителя полей. И с кириллицей не очень дружит.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: сбор значений из 2-х списков

Непрочитанное сообщение kpp » 2012-08-03 11:42:04

А вот sort - мощнейшая и очень продуманная утилита. Рекомендую.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

mmvds
мл. сержант
Сообщения: 92
Зарегистрирован: 2011-01-26 17:24:07

Re: сбор значений из 2-х списков

Непрочитанное сообщение mmvds » 2012-08-03 12:05:08

kpp, спасибо! как всегда, выручили

mmvds
мл. сержант
Сообщения: 92
Зарегистрирован: 2011-01-26 17:24:07

Re: сбор значений из 2-х списков

Непрочитанное сообщение mmvds » 2012-08-03 12:30:18

а еще подскажите плиз, что обозначает "+0 -1"? в man такого не нашел

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: сбор значений из 2-х списков

Непрочитанное сообщение kpp » 2012-08-03 12:55:50

"+0 -1" определяет ключ сортировки - первое поле. Нумерация полей начинается с нуля.
Читается так: "ключ сортировки начинается с нулевого поля, заканчивается первым полем"
Можно записать в другом виде: "-k1,1" - ключ сортировки - 1-е поле. В такой записи нумерация полей начинается с единицы.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.