配置文件
[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