Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу придумать как сделать такую простую вещь.. Не сложная проблема со скриптом 
:(
    Опции темы
rutiger
Дата 15.3.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Господа, искренне прошу совета !
Есть файл с цмфрами
56
54
1
265
32
и т.д.
А мне надо присвоить значение каждой строчки какой-нибудь переменной , а потом эти переменные запихнуть внутрь текстового файла в котором они будут фигурировать в виде присвоеных значений.
Так вот я не пойму: как я могу присвоить значение именно построчно. И как мне организовать каталог переменных ?
И желательно всё это на bash , а не на перле.

Чувствую что не сложно, а с чего начать не пойму....


Помогите пожалуйста !
PM MAIL WWW ICQ   Вверх
Шмель
Дата 16.3.2006, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 7
Всего: 18



Что-то не понятно, что конкретно нужно: как прочитать файл? или как писать в файл? и что такое "каталог переменных"?

Файл с цифрами in:
Код

56
54
1
265
32


Такой код
Код

#!/bin/bash

VALUES=`cat ./in`
for V in $VALUES
do
  let K++
  echo "arr["$K"]="$V
done > out


генерит файл out
Код

arr[1]=56
arr[2]=54
arr[3]=1
arr[4]=265
arr[5]=32


P.S. Читай ABS Guide
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
MAKCim
Дата 16.3.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



можно перенаправить поток ввода на файл
Код

exec 0< in.dat

далее в цикле читать построчно
Код

index=0
while read a
do
    echo "perem$index=$a" >> out.dat
    expr `index=$index + 1`
done



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
rutiger
Дата 16.3.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Мужики, может я тупой.... ну не понимаю !!!
Нужно из простого текстовика с цифрами сделать такой массив :

$a=21
$b=34
и т.д.

Цифры все двузначные и стоят в начале строк.

А потом в некотором файле (тоже текстовом) произвети замену:
....
...
тыры пыры растапыры ("растапыры" меняем на $a)
...
...
и т.д. , использую все переменные.

Как это сделать без Перла ? smile


Это сообщение отредактировал(а) rutiger - 16.3.2006, 21:02
PM MAIL WWW ICQ   Вверх
batigoal
Дата 17.3.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(rutiger @ 16.3.2006, 22:00 Найти цитируемый пост)
А потом в некотором файле (тоже текстовом) произвети замену:
....
...
тыры пыры растапыры ("растапыры" меняем на $a)
...
...
и т.д. , использую все переменные.


А как определить, что именно нужно заменять?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
batigoal
Дата 17.3.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Бился полдня, и написал свой второй скрипт (не, ну кто ж знал, что надо правильно пробелы расставлять? smile ). Уверен, что все то же самое можно написать в три раза короче и в четыре раза понятней.

Скрипт берет файл с исходными числами, а потом изменяет файл с текстом (заменяет строку aaa на очередное число из файла.
Код

#!/bin/bash

# declaring of indices
declare -i readIndex
declare -i writeIndex
readIndex=0
writeIndex=0


# read numbers and putthem into array
values=`cat ./numbers.txt`
for value in $values
do
  arr[$readIndex]=$value
  readIndex=$readIndex+1
done

# read text file
text=`cat ./input.txt`
for string in $text
do
  result=`echo $string | grep aaa`

  # if we still have aaa in the string
  while [ ${#result} -ne 0 ]
  do
    # replace aaa to nummber from array
    string=${string/aaa/${arr[$writeIndex]}}

    # get the next index number, if exists 
    if [ $writeIndex -lt $readIndex ]
    then
      writeIndex=$writeIndex+1
    fi

    # check for having aaa in the string
    result=`echo $string | grep aaa`
  done

  # Write modified string to the file
  echo $string >> output.txt

done


Исходные файлы

numbers.txt:
Код

11
22
33
44
55

input.txt:
Код

sssaaafff
aaaadf
asfdsfdfsdf
aaa
aahhhhahh


Результат:
Код

sss11fff
22adf
asfdsfdfsdf
33
aahhhhahh




--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
rutiger
Дата 18.3.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Хотел проверить работоспособность скрипта, а он во время запуска говорит : bad interpreter : No such file or directory

Не могу понять почему. Вроде всё заменил в файле на своё, запускаю из каталога root (домашнего). И исполняемым его сделал. Что за хрень ?

И это для perl или для bash скрипт ?

Это сообщение отредактировал(а) rutiger - 18.3.2006, 10:31
PM MAIL WWW ICQ   Вверх
batigoal
Дата 18.3.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(rutiger @ 18.3.2006, 11:29 Найти цитируемый пост)
И это для perl или для bash скрипт ?

bash.


Может, ты просто забываешь при запуске писать точку и слэш (./script.sh)?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
rutiger
Дата 18.3.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Да нет. Все правильно делаю.

Ща попробую разобрать работу скрипта, может что пойму.
PM MAIL WWW ICQ   Вверх
Cheba
Дата 22.3.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 3
Всего: 62



rutiger, проверь где у тебя лежит баш.
Код
which bash

Потом в первую сроку скрипта впиши: #!<проный путь к башу>
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.