The OpenNET Project / Index page

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

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

"Разделитель в массиве"  +/
Сообщение от globi (ok) on 07-Май-16, 19:12 
Я что-то не понимаю. Делаю построчно чтение из файла в массивы, указываю разделитель :
Начинаю проверять на вывод с 2ого элемента и мне выводится начиная с 2ого символа


IFS=:
index=0
while read line; do
    array[$index]="$line"
    index=$(($index+1))
done < /home/ubuntu/arr
for ((a=0; a < ${#array[*]}; a++))
do
    echo "$a: ${array[$a]:1}"
done

То есть, вместо вывода
0: name2:name3:1234
1: name2:name3:1234
2: name2:name3:1234
3: name2:name3:1234

Мне выводится
0: ame1:name2:name3:1234
1: ame1:name2:name3:1234
2: ame1:name2:name3:1234
3: ame1:name2:name3:1234

Пробовал указать IFS разными способами  IFS=$':'  IFS=":"
Менял и сам разделитель на любой другой символ - результат тот же

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Разделитель в массиве"  +/
Сообщение от globi (ok) on 08-Май-16, 00:33 
>[оверквотинг удален]
> 1: name2:name3:1234
> 2: name2:name3:1234
> 3: name2:name3:1234
> Мне выводится
> 0: ame1:name2:name3:1234
> 1: ame1:name2:name3:1234
> 2: ame1:name2:name3:1234
> 3: ame1:name2:name3:1234
> Пробовал указать IFS разными способами  IFS=$':'  IFS=":"
> Менял и сам разделитель на любой другой символ - результат тот же

Или может есть другое решение для моей задачи. Есть файл, в котором хранятся данные вида
name1:1234
name2:2345
name3:3456
name4:4567
name5:5678
name6:6789
и т.д. - имена и цифры разные

Я считываю массив и получаю переменные, которые дальше передаю в скрипт
Т.е. получаю
var1='name1'
var2=1234  
Далее эти значение отработали в скрипте например
awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv

И дальше передаю следующие значение. Получается
var1='name2'
var2='2345'  

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Разделитель в массиве"  +/
Сообщение от globi (ok) on 08-Май-16, 01:15 
>[оверквотинг удален]
> и т.д. - имена и цифры разные
> Я считываю массив и получаю переменные, которые дальше передаю в скрипт
> Т.е. получаю
> var1='name1'
> var2=1234
> Далее эти значение отработали в скрипте например
> awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv
> И дальше передаю следующие значение. Получается
> var1='name2'
> var2='2345'

Всё, я видимо на майских не стоит работать ))


#!/bin/bash
while read line ; do
  IFS=":"
  set -- $line
  var1$1
  var2=$2
awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv
done < /home/arr

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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