URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10067
[ Назад ]

Исходное сообщение
"Bash. Работа с текстом. Поиск. Замена. Добавление в конец файла"

Отправлено Dark Smoke , 19-Янв-16 16:34 
обрый день
Сижу второй день над скриптом, не могу реализовать.

1. Есть файл с настройками key=>value
2. Мне дают новые настройки. Обычно это 4 - 5 новых настроек. Их надо добавить в файл.
3. если есть такие уже то заменяю значения
4. если нет, то добовляю в конец файла

Вот не как не получается на баше такое написать((

Например:

есть my.conf
param=test
url=my.domen.ru
json={'ddd':'222'}


Мне дали новые настройки которые мне надо добавить в файл my.conf
url=why.my.domen.ru
bat=true

То, ожидаемые действия:
1. url должен замениться на новое значение
2. bat добавиться в конец файла

Давать переменные хочу все сразу, например из другого файла.


Содержание

Сообщения в этом обсуждении
"Bash. Работа с текстом. Поиск. Замена. Добавление в конец файла"
Отправлено BV , 19-Янв-16 17:09 
man sed
or
http://www.grymoire.com/Unix/Sed.html

>[оверквотинг удален]
> param=test
> url=my.domen.ru
> json={'ddd':'222'}
> Мне дали новые настройки которые мне надо добавить в файл my.conf
> url=why.my.domen.ru
> bat=true
> То, ожидаемые действия:
> 1. url должен замениться на новое значение
> 2. bat добавиться в конец файла
> Давать переменные хочу все сразу, например из другого файла.


"Bash. Работа с текстом. Поиск. Замена. Добавление в конец файла"
Отправлено . , 19-Янв-16 17:40 
> Сижу второй день над скриптом, не могу реализовать.
> ...
> Давать переменные хочу все сразу, например из другого файла.

Что вы уже пытались сделать и что именно не получилось?
Если же это была хотелка "сделайте мне", то вы забыли указать цену вопроса.


"Bash. Работа с текстом. Поиск. Замена. Добавление в конец файла"
Отправлено Павел Самсонов , 19-Янв-16 21:24 
>[оверквотинг удален]
> param=test
> url=my.domen.ru
> json={'ddd':'222'}
> Мне дали новые настройки которые мне надо добавить в файл my.conf
> url=why.my.domen.ru
> bat=true
> То, ожидаемые действия:
> 1. url должен замениться на новое значение
> 2. bat добавиться в конец файла
> Давать переменные хочу все сразу, например из другого файла.


#!/bin/bash
INPUT=./input
CONF=./my.conf
IFS="="
cat $INPUT | while read string
do
    set $string
    grep "^$1" $CONF && sed -i "s/^$1=.*$/$1=$2/" $CONF || echo  "$1=$2" >> $CONF
done