awk ^ word $意外地匹配空白,如何排除?

时间:2014-01-23 03:36:18

标签: regex awk

我正在从文本文件中提取看起来像

的部分
    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邻居的缩进“end”,所以我没有得到整个部分。

如何强制^ end $ regex在带有(领先)空格的行上不匹配?

1 个答案:

答案 0 :(得分:0)

如果在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