awk ^Word $意外地匹配Whitespace,如何排除



我正在从看起来像

的文本文件中提取部分
    blah blah
end
config router bgp
    set as 123
    config neighbor
        edit 1.2.3.4
            set remote-as 321
        next
    end
    blah blah
end
config router blah
    blah blah

使用

awk '/^config router bgp$/,/^end$/' myfile

返回

config router bgp
    set as 123
    config neighbor
        edit 1.2.3.4
            set remote-as 321
        next
    end

我的问题是 ^end $ regex匹配具有领先空间的config neighbor的缩进"结束",所以我没有得到整个部分。

我如何强制 ^end $ regex不与(领先的)空白匹配?

如果总是有两个 end,则在 bgp之后总是有两个:

awk '/^config router bgp$/ {f=2} f; f && /end/ {f--}' myfile
config router bgp
    set as 123
    config neighbor
        edit 1.2.3.4
            set remote-as 321
        next
    end
    blah blah
end

最新更新