LINUX.ORG.RU

Змена текста в файле

 


0

2

Помогите написать bash скрипт, при запуску которого будет загружаться файл http://site.ru/g.txt, содержание которого

#start
...
#end
Шаг один проверить есть ли там «#start», если есть переходим к второму шагу

Потом все содержание файла http://site.ru/g.txt вставить в файл /root/a/l.conf по шаблону начало вставки #start конец #end



Последнее исправление: beastie (всего исправлений: 1)

С такими запросами лучше сразу в job, искать там фрилансера и договариваться о цене.

Если хотите, чтобы вам помогали в Development, напишите сами хоть какой-нибудь скрипт.

mky ★★★★★
()
Ответ на: комментарий от mky

Вот что я написал

cd /root/a/
/usr/bin/wget -O g.txt http://site.ru/g.txt

if grep -q start g.txt
then
{
	echo "yes"
	#сюда осталось добавить замену через рег.выражение в файле l.conf где начало замены #start а конец #end . Заменять контентом из файла g.txt
	mv g.txt
}
else 
{
    echo "no"
	rm g.txt
}
fi;

vasyakrn
() автор топика
Ответ на: комментарий от vasyakrn
sed -n '/#start/q;p' l.conf > tmp1  # Начало файла l.conf до #start
sed -n '/#start/,/#end/' g.txt > tmp2 # Вырезаемый кусок из g.txt
sed -n '/#end/{h;:1;n;p;b1}' l.conf > tmp3 # Хвост l.conf после #end

cat tmp1 tmp2 tmp3 > l.conf # Соединяем три куска

Это код, по хорошему, нужно доработать — создавать где-нибудь, допустим в /tmp временный каталог и уже там создавать временные файлы. И контролировать код завершения sed, а то вдруг в /tmp свободное место закончилось.

И, для защиты от обнуления конфига, если в /root/a/ место закончилось, делать как-то так:

mv -f /tmp/l.conf /root/a/l.conf.new && mv -f /root/a/l.conf.new /root/a/l.conf

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.