The OpenNET Project / Index page

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

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

"Анализ массива в bash."  
Сообщение от Роман email(??) on 21-Апр-06, 16:14 
Добрый день. Подскажите, пожалуйста.
Есть массив:

hostname[1]=host111.mydomain.com
hostname[2]=host120.subdomain.mydomain.com
hostname[3]=host121.subdomain.mydomain.com
hostname[4]=host22.superdomain.superdomain2.ru
hostname[5]=host12.superdomain2.ru
hostname[6]=host38.mydomain.com

Хотелось бы создать второй массив, котрый в данном случае будет содержать:

domain[1]=mydomain.com
domain[2]=subdomain.mydomain.com
domain[3]=superdomain.superdomain2.ru
domain[4]=superdomain2.ru

Просто надо пранализировать домены хостов и создать из них массив. Названия доменов не должны повторяться в этом массиве.

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

 Оглавление

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


1. "Анализ массива в bash."  
Сообщение от Vic (??) on 21-Апр-06, 18:23 
На вскидку так (далеко не лучший вариант):

a[0]="h1.d1a.com"
a[1]="h2.d1.com"
a[2]="h1.d2.com"
a[3]="h2.d2.com"
a[4]="h3.d3.com"
a[2]="h1.d1.com"
a[5]="h1.h1.com"

for i in `echo ${a[*]#*.} | tr ' ' '\n' | uniq` ; do b[j=$(($j + 1))]=$i ; done

echo ${b[*]}

А вообще man bash никто не отменял.

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

2. "Анализ массива в bash."  
Сообщение от jd (??) on 22-Апр-06, 09:22 
А вы уверены, что вам вообще нужны массивы в вашей задаче?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Анализ массива в bash."  
Сообщение от Роман (??) on 22-Апр-06, 11:00 
>А вы уверены, что вам вообще нужны массивы в вашей задаче?

А какие есть еще варианты!?

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

4. "Анализ массива в bash."  
Сообщение от jd (??) on 22-Апр-06, 19:42 
>>А вы уверены, что вам вообще нужны массивы в вашей задаче?
>
>А какие есть еще варианты!?

Можно оперировать с вашим набором (доменов или ещё чего) как с потоком (строк). Тогда его можно пропускать через различные фильтры. Например, в данном случае фильтр будет выглядеть примерно так:

sed 's/^[^.]*\.//' | sort -u

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

5. "Анализ массива в bash."  
Сообщение от Роман (??) on 08-Май-06, 13:08 
>На вскидку так (далеко не лучший вариант):
>
>a[0]="h1.d1a.com"
>a[1]="h2.d1.com"
>a[2]="h1.d2.com"
>a[3]="h2.d2.com"
>a[4]="h3.d3.com"
>a[2]="h1.d1.com"
>a[5]="h1.h1.com"
>
>for i in `echo ${a[*]#*.} | tr ' ' '\n' | uniq`
>; do b[j=$(($j + 1))]=$i ; done
>
>echo ${b[*]}
>
>А вообще man bash никто не отменял.

Vic, а можно поподробней про вот этот момент  --> ${a[*]#*.}
Не понимаю как это работает!
И еще, а как с помощью такой же конструкции отдезать символы до точку, но уже с другой стороны, не слева, а справа!?


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

6. "Анализ массива в bash."  
Сообщение от Роман (??) on 08-Май-06, 13:23 
>>На вскидку так (далеко не лучший вариант):
>>
>>a[0]="h1.d1a.com"
>>a[1]="h2.d1.com"
>>a[2]="h1.d2.com"
>>a[3]="h2.d2.com"
>>a[4]="h3.d3.com"
>>a[2]="h1.d1.com"
>>a[5]="h1.h1.com"
>>
>>for i in `echo ${a[*]#*.} | tr ' ' '\n' | uniq`
>>; do b[j=$(($j + 1))]=$i ; done
>>
>>echo ${b[*]}
>>
>>А вообще man bash никто не отменял.
>
>Vic, а можно поподробней про вот этот момент  --> ${a[*]#*.}
>Не понимаю как это работает!
>И еще, а как с помощью такой же конструкции отдезать символы до
>точку, но уже с другой стороны, не слева, а справа!?

Sorry, разобрался --> ${a[*]%.*}

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

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

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




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

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