Если вы используете Linux в качестве своей системы, то вам часто приходится работать с INI файлами, т.к практически все конфигурационные файлы в Linux имеют такой формат.  Данный пост поможет вам парсить такие файлы.

[секция]
ключ1=значение1
ключ2=значение2
;ключ3=значение3

Бывают задачи, когда нужно автоматизировать этот процесс. Так как мы используем операционную систему Linux, то грех не воспользоваться Bash‘ем.

Написал небольшой скрипт, с помощью которого мы можем получить значение ключа INI файла в любой секции.

#!/bin/bash
section_f=$1
the_key=$2
mysqlconf=$3
if [ ! -r "$mysqlconf" ]
   then
     exit 1;
   fi
exec < $mysqlconf
while read section; do
 section=${section// /}
  if [ "$section" ='['$section_f']' ] ; then
    IFS='='
    while read key value; do
 key=${key// /}

 if [ $key = $the_key ]; then
 value=${value// /}
        echo $value
        exit 1
      fi
    done
  fi
done

Как видно, в качестве первого параметра скрипт ожидает секцию, второго — ключ, а третьего — адрес ini файла.

Ну и опробуем скрипт в работе на примере ini файла следующего содержания

[global]
hostname = localhost
dbname= asteriskcdrdb
password      =    gjhjkm
user = user
userfield=1
;port=3306
;sock=/tmp/mysql.sock
root@debian:~# parser.sh global user /etc/asterisk/cdr_mysql.conf
gjhjkm

Обратите внимание, что скрипт выводит значение без пробелов, т.е ini файл может быть в произвольной форме.

Вот таким простым способом можно парсить ini файл в Linux.

Взято с blog.itradius.ru

Комментарии

comments powered by Disqus