• linux Shell 读取和写入配置文件


    配置文件

    [comon]
    ids=com1,com2,com3
    files=profilefile
    files=   weswff     
     
    [com1]
    key="name"
    file="test"
     
    [com2]
    key="name1"
    file="test"
     
    [com3]
    key="name2"
    file="test"
    
    [comon]
    file=ssss
    file3=iiiii
    files=  best
    [comon]
    

      脚本

    #!/usr/bin/bash
    getLine(){
        file=$1
        section=$2
        option=$3
        tl=$(cat $file | wc -l)
        lines=$(sed -n -e "/$section/=" $file)
        tn=0
        lindedata=''
        for i in $lines
        do
            nlines=$(cat $file | awk -v i=$i '/^[.*]$/ {if(NR>i)print NR}')
            nline=$(echo $nlines | awk '{print $1}')
            if [ -n $nline ]
            then
                sl=$((i+1))
                el=$((nline-1))
                if [ $el -eq -1 ]
                then
                    el=$tl
                fi
                #echo $tl $nline
                if [ $((tl-nline)) -ge 0 ]
                then
                    rs=$(cat $file | head -n $el | tail -n "+"$sl | grep -n '^'$option | tail -n 1)
                    #echo $rs
                    flag=$(awk -v a="$rs" -v b=":" 'BEGIN{print index(a,b)}')
                    if [ $flag -ne 0 ]
                    then
                        px=$(echo $rs | awk -F ':' '{print $1}')
                        tn=$((i+px))
                    fi
                fi
            fi
        done
        return $tn
    
    }
    getConfig(){
        file=$1
        section=$2
        option=$3
        getLine $file $section $option
        line=$?
        #echo $line
        content=$(cat $file | awk '{if(NR=="'$line'"){print}}')
        #echo $content
        value=$(echo $content | awk -F '=' '{print $2}')
        #echo $value
    
    }
    
    alterConfig(){
        file=$1
        section=$2
        option=$3
        rvalue=$4
        getConfig $file $section $option
        str=$line's/'$value'/'$rvalue'/'
        sed -i "$str" $file
    }
    getConfig test.conf comon files
    echo $line $value 
    alterConfig test.conf comon files best
    #echo $line $value
    getConfig test.conf comon files
    echo $line $value
    

      

  • 相关阅读:
    1050. String Subtraction
    1041. Be Unique
    1033. 旧键盘打字
    1029. 旧键盘
    1080. Graduate Admission
    1083. List Grades
    1075. PAT Judge
    sed指令进阶操作
    Mysql最大连接数
    javascript自写工具方法
  • 原文地址:https://www.cnblogs.com/navysummer/p/12117958.html
Copyright © 2020-2023  润新知