LINUX.ORG.RU

Объединение массива с разделителем в Bash

 


0

1

Привет! Собственно сабж))

Нужно объединить обычный одномерный массив с указанным разделителем.

В частности стоит задача удаления из домена вида subdomain.domain.ru домена первого уровня .ru и получения subdomain.domain

После разделения остается массив, но объединить без последнего элемента с разделителем «точка» не получается

Заранее спасибо



Последнее исправление: astralo (всего исправлений: 1)

А как ты это делаешь? Выложи наработки свои. Может достаточно на ошибку указать, а не писать с нуля.

Deleted
()

Плюсую предыдущего оратора. Непонятно что и как ты делаешь. Что такое «массив с разделителем»?

В частности стоит задача удаления из домена вида subdomain.domain.ru домена первого уровня .ru и получения subdomain.domain

$ DOMAIN="subdomain.domain.ru" ; echo "${DOMAIN%.*}" ; echo "$DOMAIN" | sed "s/\.[^\.]*$//g"
Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

С удовольствием показываю :)

dom = «subdomain.domain.ru»;

# получаю массив arr = ( subdomain domain ru) IFS="." read -a arr <<< $dom;

# номер последнего элемента count = ${#arr[@]}-1;

# удаляю последний элемент unset ${arr[$count]};

astralo
() автор топика
Ответ на: комментарий от Kroz

Ваше решение вполне то, что надо :) спасибо большое :)

а короче вариант может быть?

astralo
() автор топика

Также плюсую предпредыдущего... А сконкатенировать массив, полагаю, можно как-то так:

array=(a b c)

for i in "${array[@]}"
do
  str+="${i}."
done

echo $str

$ bash test.sh

a.b.c.

anonymous
()
Ответ на: комментарий от Kroz

в общем все мои телодвижения с разделением строки вообще не нужны были )) достаточно было одной строчки

echo "${DOMAIN%.*}"

astralo
() автор топика
#!/bin/bash

IFS_OLD="$IFS"
IFS="."

declare -a ARRAY
ARRAY=( $1 )
IFS="$IFS_OLD"

Z="";
N=${#ARRAY[@]}
for (( J = 0; J < N-1; J++ )); do
	echo -n "$Z${ARRAY[$J]}"
	Z="."
done
emulek
()
Ответ на: комментарий от astralo

достаточно было одной строчки

не. Это неспортивно.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.