LINUX.ORG.RU

Сообщения Free0N

 

Разбор ini-like файлов

Форум — Development

Доброго времени суток to all.

Довольно часто приходится разбирать текстовые файлы, синтаксисом похожие на ini. «похожие» потому, что секции могут иметь другой вид (но явно выражены). Значение полей может отбиваться от их имени с помощью ":", вместо стандартного «=».

Пример секции:

ready >>> sh d SomeDevice
  deviceType = deviceModel
  ipAddress = x.x.x.x
  port = 5060
  userName = 

И, собственно, задача - распарсить такие файлы и занести соответствующие данные в БД (mysql). Сейчас пользуюсь довольно громоздкими конструкциями вида:

echo "insert into db.table (deviceName, deviceIp) values"
grep "(ready >>>|ipAddress)" "входящий файл" | sed -e 's/ready >>> sh d /section = /' | while read str; do
 echo "$str" | grep -q "section" && echo ""
 echo -n "$str; "
done | while read infoStr; do
 # infoStr - это строка, похожая на:
 # section="имя секции"; param1="value1"; param2=value2;
 section=""
 param1=""
 param2=""
 eval "${infoStr}"
 echo "('${section}', '${param1}', '${param2}'), "
done

Sql, генерируемый таким скриптом для секции из примера выше:

insert into db.table (deviceName, deviceIp) values
 ('SomeDevice', 'x.x.x.x'),

В итоге я получаю некоторый длинный запрос, который и выполняется в дальнейшем.

Так вот. Мб вместо таких чудовищь есть какое-нибудь «средство», которое бы позволило более проще обрабатывать «ini»-файлы?

 

Free0N
()

RSS подписка на новые темы