Помогите написать bash скрипт, при запуску которого будет загружаться файл http://site.ru/g.txt, содержание которого
#start
...
#end
Шаг один проверить есть ли там "#start", если есть переходим к второму шагу
Потом все содержание файла http://site.ru/g.txt вставить в файл /root/a/l.conf по шаблону начало вставки #start конец #end
Змена текста в файле
Модератор: Bizdelnick
-
Bizdelnick
- Модератор
- Сообщения: 21439
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Змена текста в файле
С удовольствием. Покажите, что уже написали.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
vasyakrn
- Сообщения: 5
Re: Змена текста в файле
Код: Выделить всё
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;-
Bizdelnick
- Модератор
- Сообщения: 21439
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Змена текста в файле
Замена через регулярку здесь не прокатит, если ограничиться grep/sed, потому что они работают с отдельными строками. Можно сделать, например, так:
Код: Выделить всё
started=0
while read line; do
if [ "$line" = "#start" ]; then
started=1
fi
if [ $started -ne 0 ]; then
echo "$line" >> a.txt
fi
if [ "$line" = "#end" ]; then
break
fi
done < g.txtПишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Змена текста в файле
Можно проще.
Код: Выделить всё
wget -O /tmp/g.txt http://site.ru/g.txt
if grep '#start' /tmp/g.txt ; then
sed -n '/#start/,/#end/{/#start/d;/#end/q;p}' /tmp/g.txt >> /root/a/l.conf
# тут /#start/d;/#end/d; из sed'a можно выкинуть, при условии, что эти строки тоже нужны в l.conf
else
echo "not found"
fiUNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
vasyakrn
- Сообщения: 5
Re: Змена текста в файле
SLEDopit писал(а): ↑19.01.2016 15:21Можно проще.
Код: Выделить всё
wget -O /tmp/g.txt http://site.ru/g.txt if grep '#start' /tmp/g.txt ; then sed -n '/#start/,/#end/{/#start/d;/#end/q;p}' /tmp/g.txt >> /root/a/l.conf # тут /#start/d;/#end/d; из sed'a можно выкинуть, при условии, что эти строки тоже нужны в l.conf else echo "not found" fi
Добавляет в конец содержание файла http://site.ru/g.txt , а нужно чтоб все заменялось
Скрипт будет запускаться по крону и файл http://site.ru/g.txt будет начинаться с #start и заканчиватся на #end .
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Змена текста в файле
>> на > заменить в строке с sed'ом. и всё.vasyakrn писал(а): ↑19.01.2016 16:12Добавляет в конец содержание файла http://site.ru/g.txt , а нужно чтоб все заменялось
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
vasyakrn
- Сообщения: 5
Re: Змена текста в файле
SLEDopit писал(а): ↑19.01.2016 16:20>> на > заменить в строке с sed'ом. и всё.vasyakrn писал(а): ↑19.01.2016 16:12Добавляет в конец содержание файла http://site.ru/g.txt , а нужно чтоб все заменялось
что именно заменить? Можете написать сами код?
Код: Выделить всё
sed -n '/#start/,/#end/{/#start/d;/#end/q;p}' /tmp/g.txt >> /root/a/l.confНапомню что в файле /tmp/g.txt есть #start и #end и их нужно оставить в файле /root/a/l.conf чтоб при другом запуске скрипта все работало
-
Bizdelnick
- Модератор
- Сообщения: 21439
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Змена текста в файле
i Уведомление от модератора Bizdelnick Второй раз Вам напоминаю, что решать за Вас задачки на этом форуме никто не нанимался. Вам уже достаточно помогли, осталось только включить мозг и понять, как работают предложенные решения, чтобы при необходимости подправить их. Тему закрываю. Привет преподу.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |