【发布时间】:2018-10-13 00:36:24
【问题描述】:
我有一个问题,我认为用 awk 最容易解决,但我还是绕了一圈。 在一个文件中,我有这样的重复输出:
....
Name="BgpIpv4RouteConfig_XXX">
<Ipv4NetworkBlock id="13726"
StartIpList="x.y.z.t"
PrefixLength="30"
NetworkCount="10000"
... other output
然后这个块将重复。
a)我想在 BGPIpv4Route.* 上进行匹配,然后跳过 2 行(awk 的“n”关键字),然后在达到前缀长度时: - 要么用随机替换它(25,30) 要么 - 更好,但我猜更难(不知道跟踪使用的内容并在 /25../30 之间循环) -> 第一次出现 /25,第二次出现 /26...直到 /30,然后回滚到/25
b) 然后下一行 NetworkCount 取决于 PrefixCount 的新值将其计算为 65536 / 2^(32-Prefix Count)
例如:如果此事件的 PrefixCount 被替换为 /25,则其后一行的 NetworkCount = 65536 / 2 ^ 7 = 65536 / 128 = 512
我发现了一些示例,在匹配的一行之后插入/更改一行(或在匹配项下方使用计数器变量 X 行),但我对值生成部分以及更改两行其中一个有点困惑取决于对方。 不知道我说得有没有道理……我现在到处都发现了一些东西,让我有点不知所措。
提前致谢!
【问题讨论】:
标签: parsing awk scripting insert