我需要一个工具,允许我解析配置文件并从中请求一些数据。
配置文件的格式是免费(它可以是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工具吗?
答案 0 :(得分:4)
您可以使用python(.ini-Style配置文件)执行此操作:http://docs.python.org/library/configparser.html
修改强>: 你也可以将sed与正则表达式一起使用(但是如果你没有经历过sed:P),那么就忘记“轻松”了。
答案 1 :(得分:3)
一个简单的配置格式样式(变量=值,每行一个)很容易用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 :(得分:2)