Linux 脚本修改ini,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

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值