【shell】删除samba配置文件中某一section的配置

 本脚本用于删除ini格式中某段section的配置。原理是通过计算section所在的开始行号和结束行号,然后传给sed命令,直接删除

onecloud:~:# cat replace.sh
## 作用:删除ini中某一section的配置
##

section="tobedeleted"
#获取当前配置起始行号
declare -i LN
LN=$( cat smb.conf | grep -n "\["${section}"\]" | cut -d: -f1 )
echo "$LN"
#发现已有配置,希删除
if [ $LN -gt 0 ];then
        #计算距离下一条配置相差的行数
        declare -i DIFFNUM
        DIFFNUN=$( sed -n "$(( $LN + 1 )),$ p" smb.conf | grep -n "\[.*\]" | cut -d: -f1 | head -n 1 )
        if [ $DIFFNUM -gt 0 ];then
                #将要删除的截止行数
                declare -i NEXTLN
                NEXTLN=$(( $LN + $DIFFNUM - 1 ))
                echo $NEXTLN
                #删除当前配置
                sed "$LN,$NEXTLN d" smb.conf
        else
                #应该是最后一段section,直接删到行尾
                echo "行尾"
                sed "$LN,$ d" smb.conf
        fi
fi

#如果要在删除后,要原有位置插入新的配置,可以这么写:
sed '${NEXTLN}i two lines \
to be inserted!
' smb.conf

你可能感兴趣的:(服务器,linux,ssh,sed,运维,shell,ini)