使用shell(sed/awk)从ini文件获取节列表
我想从ini文件的节名创建一个变量,如:使用shell(sed/awk)从ini文件获取节列表,sed,awk,ini,Sed,Awk,Ini,我想从ini文件的节名创建一个变量,如: [foo] ; ... [bar] ; ... [baz:bar] ;... 现在我需要一个像 SECTIONS="foo bar baz" 提前感谢我现在正在使用此构造,不需要知道是否存在节。只要读一下,如果它是空的,它就不存在了 INI_FILE=test.ini function ini_get { eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \ -e 's/;
[foo]
; ...
[bar]
; ...
[baz:bar]
;...
现在我需要一个像
SECTIONS="foo bar baz"
提前感谢我现在正在使用此构造,不需要知道是否存在节。只要读一下,如果它是空的,它就不存在了
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
INI\u文件=test.INI
函数ini\u get
{
eval`sed-e's/[:space:][]*\=[[:space:][]*/=/g'\
-e’s/;.*$/'\
-e's/[:空格:]*$/'\
-e's/^[:空格:]*/'\
-e“s/^\(.*\)=\([^\”]*\)$/\1=\“\2\”/“\
<$INI\u文件\
|sed-n-e“/^\[$1\]/,/^\s*\[/{/^[^;].\=.*/p;}”
echo${!2}
}
IP=$(ini\U获得50001 IP)
端口=$(ini\U获取50001端口)
echo$IP:$PORT
单线解决方案可以是:
export SECTIONS=`grep "^\[" test.ini |sort -u | xargs | tr '\[' ' ' | tr '\]' ' ' `
SECTIONS=$(crudini --get your.ini | sed 's/:.*//')