The OpenNET Project / Index page

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

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

"Bash - Двумерный массив..."  
Сообщение от go12345 (ok) on 15-Окт-07, 17:33 
Ааааа, нужна помощь,
подскажите, плз, кто сможет разобраться в том, что я понаписал...

#!/bin/bash
[...]

  declare -a ARRAY
  let count=0
  for LINE in $LINES; do
    let ind=$RESERV+3
    let ind=$count*$ind+1
    ARRAY[$ind]=`echo ${LINE}|sed -e '/\([^_]*\).*/s//\1/p'|sed q`
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
    let ind+=1
    ARRAY[$ind]=`echo ${LINE}|sed -e '/[^_]*[_]\([^_]*\).*/s//\1/p'|sed q`
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
    NUMBERS=`echo ${LINE}|sed -e '/[^_]*[_][^_]*[_]\(.*\)/s//\1/p'|sed q|sed 's/_/ /g'`
    for NUMBER in $NUMBERS; do
      let ind+=1
      ARRAY[$ind]=$NUMBER
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
    done
    let count+=1    
echo "${ARRAY[@]}"
  done

[...]

Собственно проблема с массивом.
Каждое объявление нового элемента массива воспринимается как переопределение самого массива.
Т.е. то что я привел выше возвращает следующее
(0) (1) (код1)
(0) (2) (наименование1)
(0) (3) (4661544318)
(0) (4) (551868)
(0) (5) (816861644)
...
816861644


P.S.
Для понимания:
LINES имеют вид <код>_<наименование>_<номер1>_<номер2>_<номер3>_<номер4>_<номер5>_<номер6>_<номер7>_<номер8>_..._<номерX>
таких строк несколько миллионов...
RESERV соответственно равен количеству номеров + 3

Предполагалось что-то вроде двумерного массива:

код1 наименование1 null номер11 номер12 номер13 ...
код2 наименование2 null номер21 номер22 номер23 ...
код3 наименование3 null номер31 номер32 номер33 ...


Без массива дальше не обойтись, и делать нужно только на bash

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

 Оглавление

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


1. "Bash - Двумерный массив..."  
Сообщение от jd (??) on 16-Окт-07, 06:39 
>подскажите, плз, кто сможет разобраться в том, что я понаписал...

Весьма оригинальная постановка вопроса. Также довольно оригинально привести какой-то запутанный кусок кода, вырванный из контекста, а также использующий какие-то переменные, содержание которых не вполне ясно. Также не ясно насчёт двумерного массива (man bash(3): "Bash  provides  one-dimensional  array  variables").

Ну и насчёт
>Без массива дальше не обойтись, и делать нужно только на bash

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

P.S. То, что делает этот код, можно записать в три короткие строчки.

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

2. "Bash - Двумерный массив..."  
Сообщение от phpcoder email(??) on 18-Окт-07, 11:35 
Ужас. Как этот код поддерживать-то собираетесь?


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

Вот если бы вы привели строк 10 входного файла и 10 выходного, то можно было бы более интересно, а так разбирайтесь сами :)

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

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

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




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

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