Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Выполнить замену в файле стандартными средствами / 9 сообщений из 9, страница 1 из 1
21.08.2006, 11:43:29
    #33931711
Gallagher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
Есть текстовой файл, в котором имеются строчки вида VARCHAR(x), где x - натуральное. Задача: средствами коммандного интерпритатора заменить такие строчки на VARCHAR(y), где y=x*2
...
Рейтинг: 0 / 0
21.08.2006, 12:59:02
    #33932035
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
а VARCHAR(x) один всего в строке? тогда что-нибудь типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#!/bin/sh

while read a
do
 set `echo $a | awk 'BEGIN{FS="VARCHAR\\(|\\)"}{print $2}' | sed s/[,\(\)]//g`
 var=`echo $ 1  \*  2  | bc`
 echo $a | sed -e "s/VARCHAR(.*)/VARCHAR($var)/"
done < file.txt
...
Рейтинг: 0 / 0
21.08.2006, 14:59:00
    #33932479
Gallagher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
забыл уточнить, что VARCHAR(x) не один в строке...
но идея ясна
спасибо огроменное
...
Рейтинг: 0 / 0
21.08.2006, 18:11:23
    #33933046
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
надеюсь, что получилось. Imho универсальный вариант мог бы быть таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#!/bin/sh


fff(){
read b

set `echo $@ | awk '{for(i=1;i<=NF;i++)s=s " " $i*2}END{print s}'`

i= 1 
 while [ "$1" != "" ]
 do
 b=`echo $b | sed -e "s/VARCHAR([.0-9]*)/VAR_zxzx_CHAR($1)/"`
  shift
 i=`expr $i +  1 `
 done
 b=`echo $b | sed -e "s/VAR_zxzx_CHAR/VARCHAR/"`
 echo $b
}

while read a
do

 set `echo $a | awk 'BEGIN{FS="VARCHAR\\\("}{for(i=2;i<=NF;i++){print substr($i,0,index($i,")")-1)}}'`

echo $a | fff $@
done < file.txt
...
Рейтинг: 0 / 0
22.08.2006, 00:09:39
    #33933413
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
--null--надеюсь, что получилось. Imho универсальный вариант мог бы быть таким:

...ну ты маньяк... :)

яб еще в конце приписал пожелание автору перл выучить...
...
Рейтинг: 0 / 0
22.08.2006, 00:43:06
    #33933438
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
Конечно, perl в данном случае гораздо лучше бы подошел. Просто несказанно.
Но бывают ситуации, когда такое надо делать именно на shell.
Работодатель требует типа. Сам столкнулся. Его не интересует, что сотрудник может владеть более мощным инструментом - perl или python или еще чем-то, требование скриптинг - на стандартном shell и точка.
...
Рейтинг: 0 / 0
22.08.2006, 02:15:43
    #33933456
contr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
Безотносительно инструмента я бы рекомендовал менять не на "varchar(y), где y=x*2", а на "varchar(x CHAR)" - так оно понадежнее будет
...
Рейтинг: 0 / 0
22.08.2006, 11:20:54
    #33933975
Gallagher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
nik2
яб еще в конце приписал пожелание автору перл выучить...

Автор знает пёрл. Но особенность задачи заключается в том, что скрипт должен будет выполняться на серваках в спартанской остастке (т.е. безо всяких perl, php, python и еже с ними)
...
Рейтинг: 0 / 0
22.08.2006, 11:24:01
    #33933990
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить замену в файле стандартными средствами
собственно, я так и думал
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Выполнить замену в файле стандартными средствами / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]