2010-10-26 45 views
1

我需要一个工具,它允许我解析配置文件并从中请求一些数据。任何可以在Linux上轻松解析配置文件的工具?

配置文件的格式是免费(它可以是INI,XML等等),但更人性化,更好。

下面是一个示例配置文件(使用XML,但是它可以是任何东西:我不介意格式):

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

该工具的使用应该是这样的:

[[email protected] ~]$ the_tool config.xml "string(/configuration/name)" 
Some name 
[[email protected] ~]$ the_tool config.xml "string(/configuration/description)" 
Some description 

你知道任何可以做到的Linux工具吗?

回答

4

你可以做到这一点与蟒蛇(.INI风格的配置文件):http://docs.python.org/library/configparser.html

编辑: 你可以只使用正则表达式用sed的,太(但忘了“容易”的话,如果你”与sed没有经历过一点:P)。

2

一个简单的配置格式样式(可变值=,每行一个)易于与grep和切解析。

例如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的并且在任何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

相关问题