[quote="moshell"]egrep -v полностью отсекает строки содержащие "{" и "}"
В файле .INSTALL есть лишние строки, несодержащие фигурных скобок.
Ладно, всё это пустое сотрясание воздуха. Пусть ТС сам решает, как удобнее ;)[/quote]
Альберто, смысл моего метода заключается в том, что он отделяет нужный нам абзац. а абзацы разделены пустой строкой.
то есть все остальные строки post_install без фигурных скобок отсекаются еще на стадии прохождения sed. ок?)
Serj, хватит тут вуайеристического критика изображать ))
покажи лучше как змея в этом плане работает?
Вы хотите извращений? Их есть у меня :D
text
#!/usr/bin/env python
#_*_ coding: utf-8 _*_
lines = open('INSTALL', 'r').readlines()
data = []
counter = 0
IN = False
for line in lines:
if 'post_install()' in line:
IN = True
if IN and '{' in line:
counter += 1
if IN and '}' in line:
counter -= 1
if counter and ('post_install()' not in line) and (len(line) > 2):
data.append(line.lstrip())
if IN and not counter:
IN = False
f = open('doinst.sh', 'w').writelines(data)
По-идее, этому индусскому чуду должно быть безразлично кол-во и расположение фигурных скобок, главное, чтобы они были парные...
Сильно удивлюсь, если в теле функции будут вложенные фигурные скобки.
Если такое всё же случиться, то...
text
sed -n -e '/post_install() {[[:space:]]*$/,/^[[:space:]]*}[[:space:]]*$/p' INSTALL | sed -e '1d;$d' > doinst.sh
Я поставил вот этот вариант, но тут маленький вопросик - как убрать пробелы перед
gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
то есть выклинивает и записывает прекрасно, но наверное лучше без лидирующих пробелов, вот так
gtk-update-icon-cache -q -t -f usr/share/icons/hicolor