在Linux上轻松解析配置文件的任何工具?

时间:2010-10-26 09:25:33

标签: linux parsing configuration-files redhat

我需要一个工具,允许我解析配置文件并从中请求一些数据。

配置文件的格式是免费(它可以是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 个答案:

答案 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)