Любой инструмент для легкого разбора файла конфигурации в Linux? - PullRequest
1 голос
/ 26 октября 2010

Мне нужен инструмент, который позволяет мне анализировать файл конфигурации и запрашивать у него некоторые данные.

Формат файла конфигурации: свободный (это может быть INI, XML,и так далее) но чем более дружественным к человеку, тем лучше.

Вот пример файла конфигурации (с использованием XML, но это может быть что угодно: я не против формата):

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <name>Some name</name>
  <description>Some description</description>
</configuration>

Использование инструмента должно быть примерно таким:

[ereOn@server ~]$ the_tool config.xml "string(/configuration/name)"
Some name
[ereOn@server ~]$ the_tool config.xml "string(/configuration/description)"
Some description

Знаете ли вы какой-нибудь инструмент Linux, который может это сделать?

Ответы [ 3 ]

4 голосов
/ 26 октября 2010

Вы можете сделать это с помощью Python (файлы конфигурации в стиле .ini): http://docs.python.org/library/configparser.html

EDIT : Вы также можете просто использовать sed с регулярными выражениями (но тогда забудьте «легко», если вы не знакомы с sed: P).

3 голосов
/ 17 октября 2011

Простой стиль формата конфигурации (переменная = значение, по одному на строку) легко анализируется с помощью grep и cut.

Например, файл config.conf:

name=Some Name
description=Some Description

Затем, чтобы получить конкретное значение:

# grep "^name=" config.conf | cut -d= -f2
Some Name
# grep "^description=" config.conf | cut -d= -f2
Some Description

Это просто и очень дешево (не требует установки дополнительных двоичных файлов, поскольку grep и cut являются стандартными для любого Linux ...).

Вы также можете написать простую оболочку bash-скрипта, если хотите, чтобы одна команда выдавала нужное вам значение:

#!/bin/bash

CONFIG_PATH=/path/to/config.conf

if [ ! -e $CONFIG_PATH ]; then
  echo "$CONFIG_PATH not found"
  exit 1
fi

if [ $# -ne 1 ]; then
  echo "Syntax: $0 \"<variable name>\""
  exit 1
else
  VARNAME="$1"
  eval "grep \"^$VARNAME=\" $CONFIG_PATH | cut -d= -f2"
fi

Тогда все, что вам нужно сделать, это назвать так:

# yourscript.sh variable_name

2 голосов
/ 26 октября 2010
...