使用bash删除配置文件中的节
我还是个脚本编写新手。我正在尝试编写一个脚本来删除配置文件中的一个部分,我已经尝试从网站上的不同帖子中编写了几个脚本,但到目前为止都没有成功 配置文件的示例:使用bash删除配置文件中的节,bash,Bash,我还是个脚本编写新手。我正在尝试编写一个脚本来删除配置文件中的一个部分,我已经尝试从网站上的不同帖子中编写了几个脚本,但到目前为止都没有成功 配置文件的示例: [inbound-customerA] exten => _XXXXXXXXXXX,1,Macro(setuser,customerA) exten => _XXXXXXXXXXX,n,Dial(SIP/customerA/${EXTEN}) exten => XXXXXXXXXXX,1,Macro(setuser,cu
[inbound-customerA]
exten => _XXXXXXXXXXX,1,Macro(setuser,customerA)
exten => _XXXXXXXXXXX,n,Dial(SIP/customerA/${EXTEN})
exten => XXXXXXXXXXX,1,Macro(setuser,customerA)
exten => XXXXXXXXXXX,n,Set(CHANNEL(amaflags)=billing)
exten => XXXXXXXXXXX,n,Dial(SIP/customerA/${EXTEN})
[inbound-customerB]
exten => XXXXXXXXXXX,1,ExecIf($[ "${CALLERID(name):0:2}" = "61" ]?
Set(CALLERID(name)=0${CALLERID(name):2}))
exten => XXXXXXXXXXX,n,ExecIf($[ "${CALLERID(num):0:2}" = "61" ]?
Set(CALLERID(num)=0${CALLERID(num):2}))
exten => XXXXXXXXXXX,1,Macro(setuser,CustomerB)
exten => XXXXXXXXXXX,n,Dial(SIP/CustomerB/${EXTEN})
所以我需要做的就是只删除CustomerA的部分
以下是我的方法:
#!/bin/bash
File_path="/home/xx/xxx_test/extensions.conf"
cp "$File_path" "$File_path".bak
IFS='
'
PATTERN_1="[inbound\-customerA]"
PATTERN_2="(SIP/customerA/${EXTEN})"
GREP_RESULTS=(`grep -nRi "$PATTERN_1" "$File_path"`)
for line in "${GREP_RESULTS[@]}"; do
FILE=${line%%:*} START_LINE=echo "$line" | cut -f2 -d:
GREP_RESULT=(`tail -n +${START_LINE} $FILE | grep -in "$PATTERN_2" | head -n1`)
END_LINE="$(( $START_LINE + echo "$GREP_RESULT" | cut -f1 -d: - 1 ))"
sed -e "${START_LINE},${END_LINE}d;" $FILE > $FILE done
如果您对
awk
没有问题,我们将非常感谢您的帮助,您可以尝试以下内容。编写并测试了它
你能告诉我这个解决方案是否对你有帮助吗?
awk '
/^\[inbound/{
if($0~/inbound-customerA/){
found=1
}
else{
found=""
}
}
!found
' Input_file