Имеется файл с настройками, например, такой:
Код: Выделить всё
! Кукушка
кукует
летает
птица
! Чайник
свистит
стоит
не птица
Мне нужно добавить данные первого объекта в один файл (путь будет coocoo.rc), данные второго — в teapot.rc.
Как адекватно считать в переменную вот эти данные? (три строки с пробелами впереди):
Код: Выделить всё
кукует
летает
птица
Есть только вариант
Код: Выделить всё
cat rcfile | while IFS= read $line; do
[[ _"$line" == _ || _"${line:0:1}" == _'!' ]] && break;
coocooData="$coocooData$line"
done
Но этот вариант кажется монструозным из-за явного цикла с проверкой и ещё, кажется, он убивает концы строк при обновлении переменной coocooData. Кроме того, непонятно, как дальше читать данные про чайник, хотя это решаемо обновлением в цикле названия переменной вместо инструкции break.
В переменную нужно считать, чтобы потом воспользоваться перлом:
Код: Выделить всё
perl -pi -e "s#customrc#customrc\n\t$coocooData#" "$rcfile"