使用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