使用shell从sei文件中获取部分列表(sed / awk)

时间:2010-09-16 08:17:51

标签: sed awk ini

我想从ini文件的节名创建一个var,如:

[foo]
; ...

[bar]
; ...

[baz:bar]
;...

现在我需要一个类似

的var
SECTIONS="foo bar baz"

提前致谢

3 个答案:

答案 0 :(得分:2)

一线解决方案可能是:

export SECTIONS=`grep "^\[" test.ini |sort -u | xargs | tr '\[' ' ' | tr '\]' ' ' `

答案 1 :(得分:1)

SECTIONS=$(crudini --get your.ini | sed 's/:.*//')

答案 2 :(得分:-1)

我现在正在使用这个结构,不需要知道某个部分是否存在。只是读它,它是空的它不存在:D

INI_FILE=test.ini

function ini_get
{

    eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
        -e 's/;.*$//' \
        -e 's/[[:space:]]*$//' \
        -e 's/^[[:space:]]*//' \
        -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
    < $INI_FILE \
    | sed -n -e "/^\[$1\]/,/^\s*\[/{/^[^;].*\=.*/p;}"

    echo ${!2}
}


IP=$(ini_get 50001 ip)
PORT=$(ini_get 50001 port)
echo $IP:$PORT