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

Исходное сообщение
"Замена строк"

Отправлено fEaR , 15-Июл-05 08:40 
Привет!!
Вот есть такая проблема
есть некий конфиг в который скриптом на shell добавляются значения
конфиг должен всегда заканчиваться };
{
ip=192.168.1.1;
     {
     Template="123";
     TransitSM={Direction=10sads;ReservedDirection=20sads;};
      };
     {
     Template="[78]9234.(6)";
     TransitSM={Direction=10sads;ReservedDirection=20sads;};
     };

};
Те нужно как то либо вырезать послед строчку
либо кидать значения перед ней
подскажите плз как это лучше сделать)


Содержание

Сообщения в этом обсуждении
"Замена строк"
Отправлено allez , 15-Июл-05 09:20 
>Привет!!
>Вот есть такая проблема
>есть некий конфиг в который скриптом на shell добавляются значения
>конфиг должен всегда заканчиваться };
>Те нужно как то либо вырезать послед строчку
>либо кидать значения перед ней
>подскажите плз как это лучше сделать)


И в чем проблема? Удаляйте эту последнюю строку, пишите то, что вам
нужно и снова добавляйте ее.

P.S. Если не знаете, как удалить из файла последнюю строку, так и
спросите. Подскажу.


"Замена строк"
Отправлено fEaR , 15-Июл-05 10:26 
>>Привет!!
>>Вот есть такая проблема
>>есть некий конфиг в который скриптом на shell добавляются значения
>>конфиг должен всегда заканчиваться };
>>Те нужно как то либо вырезать послед строчку
>>либо кидать значения перед ней
>>подскажите плз как это лучше сделать)
>
>
>И в чем проблема? Удаляйте эту последнюю строку, пишите то, что вам
>
>нужно и снова добавляйте ее.
>
>P.S. Если не знаете, как удалить из файла последнюю строку, так и
>
>спросите. Подскажу.

Это и спрашиваю)

В принципе я сделал на awk но как слишком сложно всё сложно получилось
должно быть проще я думаю


"Замена строк"
Отправлено ihor , 15-Июл-05 13:48 
напр. для bash можно так (не очень эффективно, первое, что пришло в голову):
###########################
#!/usr/bin/bash
FNAME=conf.txt
NEW_FNAME=new_conf.txt
NOF_LINES=$(( `cat $FNAME|wc -l` - 1 ))
head -n $NOF_LINES $FNAME > $NEW_FNAME
echo "something new" >> $NEW_FNAME
echo "};" >> $NEW_FNAME

"Замена строк"
Отправлено fEaR , 15-Июл-05 13:54 
>напр. для bash можно так (не очень эффективно, первое, что пришло в
>голову):
>###########################
>#!/usr/bin/bash
>FNAME=conf.txt
>NEW_FNAME=new_conf.txt
>NOF_LINES=$(( `cat $FNAME|wc -l` - 1 ))
>head -n $NOF_LINES $FNAME > $NEW_FNAME
>echo "something new" >> $NEW_FNAME
>echo "};" >> $NEW_FNAME


я сделал по другому)
config=config.txt
cat $config |awk '{gsub("^};","\n", $0); print $0}'>$config


"Замена строк"
Отправлено madskull , 15-Июл-05 14:47 
>>напр. для bash можно так (не очень эффективно, первое, что пришло в
>>голову):
>>###########################
>>#!/usr/bin/bash
>>FNAME=conf.txt
>>NEW_FNAME=new_conf.txt
>>NOF_LINES=$(( `cat $FNAME|wc -l` - 1 ))
>>head -n $NOF_LINES $FNAME > $NEW_FNAME
>>echo "something new" >> $NEW_FNAME
>>echo "};" >> $NEW_FNAME
>
>
>я сделал по другому)
>config=config.txt
>cat $config |awk '{gsub("^};","\n", $0); print $0}'>$config

нет, не интересно и кнопок много нажимать надо :)
sed -ni '/^};/{g;p;q};H' $config