Посодействуйте скриптом для поиска одинакового текста

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение InventoR » 2010-12-16 15:00:13

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

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

grep -r 'mac' /etc/vz/conf
можно получить

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

./121.conf:NETIF="ifname=eth0,mac=00:18:51:23:9E:B3,host_ifname=veth121.0,host_mac=00:18:51:E1:A5:51,bridge=vmbr0"
./101.conf:NETIF="ifname=eth0,mac=00:18:51:1C:67:42,host_ifname=veth101.0,host_mac=00:18:51:F5:63:28,bridge=vmbr0"
./151.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./106.conf:NETIF="ifname=eth0,mac=00:18:51:FE:3B:14,host_ifname=veth106.0,host_mac=00:18:51:D1:76:D2,bridge=vmbr0"
./555.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./111.conf:NETIF="ifname=eth0,mac=00:18:51:20:60:D4,host_ifname=veth111.0,host_mac=00:18:51:4E:5A:24,bridge=vmbr1"
./108.conf:NETIF="ifname=eth0,mac=00:18:51:22:A8:2B,host_ifname=veth108.0,host_mac=00:18:51:65:AD:AF,bridge=vmbr1"
./126.conf:NETIF="ifname=eth0,mac=00:18:51:93:2A:0A,host_ifname=veth126.0,host_mac=00:18:51:77:D4:1B,bridge=vmbr0"
./102.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
./103.conf:NETIF="ifname=eth0,mac=00:18:51:68:07:A0,host_ifname=veth103.0,host_mac=00:18:51:8F:1E:19,bridge=vmbr0"
./104.conf:NETIF="ifname=eth0,mac=00:18:51:30:42:9C,host_ifname=veth104.0,host_mac=00:18:51:E0:BD:5B,bridge=vmbr0"
./107.conf:NETIF="ifname=eth0,mac=00:18:51:76:76:92,host_ifname=veth107.0,host_mac=00:18:51:BA:2A:EA,bridge=vmbr1"
./110.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
это все загоняется в файл + добавляется пара маков с бриджовых интерфейсов.
и теперь надо сделать так чтобы в этом файле найти все одинаковые маки или может у кого есть решение по проще, по способствуйте плиз.
ну вот и сказочке конец, кто слушал, тот молодец.

Хостинговая компания 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/

Гость
проходил мимо

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение Гость » 2010-12-16 15:04:24

привиди пример того как должен бы был сработать такой поиск по тексту который ты привел выше
а то ничерта не понятно

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение InventoR » 2010-12-16 15:21:23

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

Гость
проходил мимо

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение Гость » 2010-12-16 15:29:47

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

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение InventoR » 2010-12-16 17:03:18

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

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение ProFTP » 2010-12-16 21:03:16

точно найти одинаковые, повторяющиеся маки? а что с ними дальше делать?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение InventoR » 2010-12-16 21:32:45

а дальше ручками буду разгребать и менять их.
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение ProFTP » 2010-12-16 21:54:10

mac.txt

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

/121.conf:NETIF="ifname=eth0,mac=00:18:51:23:9E:B3,host_ifname=veth121.0,host_mac=00:18:51:E1:A5:51,bridge=vmbr0"
./101.conf:NETIF="ifname=eth0,mac=00:18:51:1C:67:42,host_ifname=veth101.0,host_mac=00:18:51:F5:63:28,bridge=vmbr0"
./151.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./106.conf:NETIF="ifname=eth0,mac=00:18:51:FE:3B:14,host_ifname=veth106.0,host_mac=00:18:51:D1:76:D2,bridge=vmbr0"
./555.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./111.conf:NETIF="ifname=eth0,mac=00:18:51:20:60:D4,host_ifname=veth111.0,host_mac=00:18:51:4E:5A:24,bridge=vmbr1"
./108.conf:NETIF="ifname=eth0,mac=00:18:51:22:A8:2B,host_ifname=veth108.0,host_mac=00:18:51:65:AD:AF,bridge=vmbr1"
./126.conf:NETIF="ifname=eth0,mac=00:18:51:93:2A:0A,host_ifname=veth126.0,host_mac=00:18:51:77:D4:1B,bridge=vmbr0"
./102.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
./103.conf:NETIF="ifname=eth0,mac=00:18:51:68:07:A0,host_ifname=veth103.0,host_mac=00:18:51:8F:1E:19,bridge=vmbr0"
./104.conf:NETIF="ifname=eth0,mac=00:18:51:30:42:9C,host_ifname=veth104.0,host_mac=00:18:51:E0:BD:5B,bridge=vmbr0"
./107.conf:NETIF="ifname=eth0,mac=00:18:51:76:76:92,host_ifname=veth107.0,host_mac=00:18:51:BA:2A:EA,bridge=vmbr1"
./110.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"

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

perl -MData::Dumper -0x0a -lne '$hash->{$1}++ while $_ =~ /(((?:(\d{1,2}|[a-fA-F]{1,2}){2})(?::|-*)){6})/smg; END { print Dumper $hash }' maс.txt

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

$VAR1 = {
          '00:18:51:93:2A:0A' => 1,
          '00:18:51:1C:67:42' => 1,
          '00:18:51:FE:3B:14' => 1,
          '00:18:51:99:49:34' => 2,
          '00:18:51:65:AD:AF' => 1,
          '00:18:51:F5:63:28' => 1,
          '00:18:51:BA:2A:EA' => 1,
          '00:18:51:F6:85:E5' => 2,
          '00:18:51:4E:5A:24' => 1,
          '00:18:51:76:76:92' => 1,
          '00:18:51:E0:BD:5B' => 1,
          '00:18:51:E1:A5:51' => 1,
          '00:18:51:D1:76:D2' => 1,
          '00:18:51:30:42:9C' => 1,
          '00:18:51:AE:93:C1' => 2,
          '00:18:51:77:D4:1B' => 1,
          '00:18:51:8F:1E:19' => 1,
          '00:18:51:23:9E:B3' => 1,
          '00:18:51:5A:EC:85' => 2,
          '00:18:51:22:A8:2B' => 1,
          '00:18:51:20:60:D4' => 1,
          '00:18:51:68:07:A0' => 1
        };
там где больше 1, то повторяются

регулярное выражение для MAC адреса тут: http://www.perlmonks.org/?node_id=83405
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение InventoR » 2010-12-16 22:00:04

пасибо огромнейшее.
ну вот и сказочке конец, кто слушал, тот молодец.

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

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение kpp » 2011-02-23 15:30:11

Перл - сильная штука, но ей пока не владею ;)
Практики ради предлагаю на тест скрипт на шелле, точнее awk.

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

#!/bin/sh
#
# mac_dowbl.sh

awk 'BEGIN {FS=","}
     {est=0;
      for(mac in mac_uniq)
      { mac_curr=substr($2,5);
       if (mac_curr==mac){est=1; mac_dowbl[mac_curr]++;}
      };
      if(est==0){mac_uniq[mac_curr]++};
     }
     END { for(mac in mac_dowbl) print mac,mac_dowbl[mac] }
     ' $1
На выходе получаем список (пример) повторяющихся маков и кол-во их повторений:

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

00:18:51:F6:85:E5 2
00:18:51:AE:93:C1 1
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

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

Re: Посодействуйте скриптом для поиска одинакового текста

Непрочитанное сообщение kpp » 2011-02-24 14:26:17

Можно проще:

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

awk -F ',' '{print substr($2,5)}' $1 | sort | uniq -c
на выходе список всех маков и их кол-во, где больше 1-го - есть дубляж;
или

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

awk -F ',' '{print substr($2,5)}' $1 | sort | uniq -d
На выходе только маки, имеющие дубляжи.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.