Chinaunix

标题: 读取ini配置文件需求,感谢各位大大~ [打印本页]

作者: go2cxg    时间: 2014-03-29 15:54
标题: 读取ini配置文件需求,感谢各位大大~
本帖最后由 rdcwayx 于 2014-03-31 08:49 编辑

1.文件test.cnf
  1. [mod1]
  2. JAVA_ARGS="-server -Xms512m -Xmx512m -XX:NewSize=64m -XX:+UseConcMarkSweepGC"

  3. JAVA_OPTSS="${JAVA_ARGS} -Dsun.rmi.dgc.server.gcInterval=3600000"

  4. [mod2]
  5. key="name"
  6. JAVA_ARGS="${JAVA_ARGS} -Dsun.rmi.dgc.client.gcInterval=30000"

  7. [mod3]
  8. key="name1"
  9. file="test"
复制代码
2.需求
希望写一个脚本,do.sh $MOD $CONF
$MOD 表示模块名称
$CONF 表示该模块下的配置名称
希望输出该模块下该配置项的值
如:sh do.sh mod1 JAVA_ARGS 输出:
-server -Xms512m -Xmx512m -XX:NewSize=64m -XX:+UseConcMarkSweepGC

谢谢。。。
折磨了很久,未果
作者: go2cxg    时间: 2014-03-29 16:24
本帖最后由 rdcwayx 于 2014-03-31 08:50 编辑
  1. # !/bin/bash
  2. INIFILE=$1
  3. SECTION=$2
  4. ITEM=$3

  5. function ReadINIfile()
  6.   {
  7.   ReadINI=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $0;exit}' $INIFILE|cut -d "=" -f 2-`
  8.   echo $ReadINI
  9. }
  10. ReadINIfile $INIFILE $SECTION $ITEM
复制代码
借用http://bbs.chinaunix.net/thread-3666122-1-1.html 加了点改动
感谢!
作者: 这个冬天不冷    时间: 2014-03-29 16:43
  1. [root@syh test]# php -r '$arr=parse_ini_file("a", true);echo $arr[$argv[1]][$argv[2]]."\n";' mod2 JAVA_ARGS
  2. -Dsun.rmi.dgc.client.gcInterval=30000
  3. [root@syh test]# cat a
  4. [mod1]
  5. JAVA_ARGS="-server -Xms512m -Xmx512m -XX:NewSize=64m -XX:+UseConcMarkSweepGC"

  6. JAVA_OPTSS="${JAVA_ARGS} -Dsun.rmi.dgc.server.gcInterval=3600000"

  7. [mod2]
  8. key="name"
  9. JAVA_ARGS="${JAVA_ARGS} -Dsun.rmi.dgc.client.gcInterval=30000"

  10. [mod3]
  11. key="name1"
  12. file="test"
  13. [root@syh test]#
复制代码

作者: yestreenstars    时间: 2014-03-29 17:13
  1. [root@bogon test2]# sh do.sh mod1 JAVA_ARGS
  2. -server -Xms512m -Xmx512m -XX:NewSize=64m -XX:+UseConcMarkSweepGC
  3. [root@bogon test2]# cat do.sh
  4. #!/bin/bash
  5. awk -F\" -v x=$1 -v y=$2 '$0=="["x"]"{k=1;next}/^\[.*\]$/{k=0}k&&$1==y"="{print $2}' test.cnf
  6. [root@bogon test2]#
复制代码

作者: tseesing    时间: 2014-03-29 19:22
本帖最后由 tseesing 于 2014-03-29 19:33 编辑

  1. [root@localhost tmp]# sed -r -n  -e '/\['$MOD'\]/,/\[[^#]+\]/{ s/^[[:blank:]]*'$CONF'="(.*)"/\1/gp }' /tmp/f
  2. -server -Xms512m -Xmx512m -XX:NewSize=64m -XX:+UseConcMarkSweepGC
  3. [root@localhost tmp]#
复制代码

作者: q1208c    时间: 2014-03-31 07:41
换成 python 的config 会不会更好些?
作者: LikeLx    时间: 2014-03-31 10:40
  1. awk -vRS='[' -v a="mod1" -v b="JAVA_ARGS=" -F '\n' '{for(i=0;i++<NF;) if($0~a&&$i~b) print $i}'
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2