zoukankan      html  css  js  c++  java
  • shell读取或者修改ini文件

    cfg_find(){
        file_name=$1
        labelname=$2
        key=$3
        labelline=$(grep -n "^[.*]$" $file_name | awk -F ':' '{print $1}')
        lineinfo=$(grep -n "^[.*]$" $file_name | awk -v labelname="$labelname" -F ':' '{a[NR]=$1;b[NR]=$2} END{for(i=0;i<length(b);i++){if(b[i-1]==labelname){print a[i-1],a[i]}}}')
        lable_lines=()
        total_line=$(cat $file_name | wc -l)
        for line in $lineinfo
        do
            start_line=$(echo $line | awk '{print $1}')
            end_line=$(echo $line | awk '{print $2}')
            if [ -z $end_line ]
            then
                $end_line=$total_line
            fi
            if [ ! -z $start_line ] || [ ! -z $end_line ]
            then
                keyinfo=$(cat $file_name | head -n $(($end_line-1)) | tail -n "+"$start_line | grep -n $key | tail -n 1 | sed 's/ //g')
                sub_line=$(cat $keyinfo | grep -n "^"$key"=" | awk -F ':' '{print $1}')
                if [ ! -z sub_line ]
                then
                    $lable_lines[${#lable_lines[@]}]=$(($start_line+$sub_line-1))
                fi
            fi
        done
        return $lable_lines
    }
    
    cfg_get(){
        file_name=$1
        labelname=$2
        key=$3
        cfg_find $file_name $labelname $key
        lable_lines=$?
        if [ ${#lable_lines[@]} -eq 0 ]
        then
            return ''
        else:
            ln=$lable_lines[${#lable_lines[@]}]
            key_value=$(cat $file_name | sed -n $ln"p")
            value=$(echo $key_value | awk -F '=' '{print $2}')
            return $value
        fi 
    }
    
    cfg_modify(){
        file_name=$1
        labelname=$2
        key=$3
        new_value=$4
        cfg_find $file_name $labelname $key
        lable_lines=$?
        if [ ${#lable_lines[@]} -eq 0 ]
        then
            return 0
        else:
            ln=$lable_lines[${#lable_lines[@]}]
            key_value=$(cat $file_name | sed -n $ln"p")
            key=$(echo $key_value | awk -F '=' '{print $1}')
            new_key_value=$key"="$new_value
            sed '"$ln"c "$new_key_value"' $file_name
            sed -n '"$ln"p' $file_name
            return 1
        fi
    }
    

      

  • 相关阅读:
    java 新建文件夹保存
    android AppWidgwtProvider学习
    GPS定位
    android ContentProvider学习
    Android 解屏幕锁与点亮屏幕(来电时效果)
    RecyclerView 分页滑动,设置可以滑动下一页,下一个item作为起点方法
    Glide 加载图片 到动态ImageView
    一个例子了解 HandlerThread,Looper,ThreadLocal,Handler,MessageQueue,Message的关系
    android TabLayout 相关
    屏幕相关
  • 原文地址:https://www.cnblogs.com/navysummer/p/11679211.html
Copyright © 2011-2022 走看看