The OpenNET Project / Index page

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

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

"внесение изменений в файл"  
Сообщение от GHopper email on 30-Ноя-06, 04:46 
Здравствуйте!
Есть файл, следующего содержания:

#comment1
#comment2
var1:varvalue1
var2:varvalue2
#comment3
var3:varvalue3

Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как это сделать наиболее правильно?

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

 Оглавление

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


1. "внесение изменений в файл"  
Сообщение от allez (ok) on 30-Ноя-06, 06:39 
>Здравствуйте!
>Есть файл, следующего содержания:
>
>#comment1
>#comment2
>var1:varvalue1
>var2:varvalue2
>#comment3
>var3:varvalue3
>
>Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как
>это сделать наиболее правильно?

Вот вам пример такого скрипта:

==========================================
#!/usr/local/bin/bash

COMMAND="`which sed`"
FILE=$1; shift

for arg in "$@"
do
    var=`echo $1 | cut -d '=' -f 1`
    value=`echo $1 | cut -d '=' -f 2`
    COMMAND="${COMMAND} -e 's/$var:.*/$var:$value/g'"
    shift
done

eval "$COMMAND $FILE > /tmp/tmpfile"
mv -f /tmp/tmpfile $FILE
==========================================

Запускается так: "script.sh <file> variable=value ..."

Пример использования:

$ cat /tmp/file
#comment1
#comment2
var1:varvalue1
var2:varvalue2
#comment3
var3:varvalue3

$ ./script.sh /tmp/file var1=newvalue1 var2=newvalue2

$ cat /tmp/file
#comment1
#comment2
var1:newvalue1
var2:newvalue2
#comment3
var3:varvalue3

P. S. Ну, а уж дальнейшую доработку скрипта оставляю вам. В качестве, так сказать,
домашнего задания. :-)

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

2. "внесение изменений в файл"  
Сообщение от GHopper email on 30-Ноя-06, 09:21 
>>Здравствуйте!
>>Есть файл, следующего содержания:
>>
>>#comment1
>>#comment2
>>var1:varvalue1
>>var2:varvalue2
>>#comment3
>>var3:varvalue3
>>
>>Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как
>>это сделать наиболее правильно?
>
>Вот вам пример такого скрипта:
>
>==========================================
>#!/usr/local/bin/bash
>
>COMMAND="`which sed`"
>FILE=$1; shift
>
>for arg in "$@"
>do
>    var=`echo $1 | cut -d '=' -f 1`
>
>    value=`echo $1 | cut -d '=' -f 2`
>
>    COMMAND="${COMMAND} -e 's/$var:.*/$var:$value/g'"
>    shift
>done
>
>eval "$COMMAND $FILE > /tmp/tmpfile"
>mv -f /tmp/tmpfile $FILE
>==========================================
>
>Запускается так: "script.sh <file> variable=value ..."
>
>Пример использования:
>
>$ cat /tmp/file
>#comment1
>#comment2
>var1:varvalue1
>var2:varvalue2
>#comment3
>var3:varvalue3
>
>$ ./script.sh /tmp/file var1=newvalue1 var2=newvalue2
>
>$ cat /tmp/file
>#comment1
>#comment2
>var1:newvalue1
>var2:newvalue2
>#comment3
>var3:varvalue3
>
>P. S. Ну, а уж дальнейшую доработку скрипта оставляю вам. В качестве,
>так сказать,
>домашнего задания. :-)


Это будет работать в /bin/sh?

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

3. "внесение изменений в файл"  
Сообщение от allez (ok) on 30-Ноя-06, 14:14 
>Это будет работать в /bin/sh?

Замените "#!/usr/local/bin/bash" на "#!/bin/sh", запустите скрипт и сами все узнаете.
Вообще-то должно бы работать.

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

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

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




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

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