У меня есть проблема, которую, я думаю, легче всего решить с помощью awk, но я обнял ее.
Внутри файла у меня есть повторяющийся вывод, как это:
....
Name="BgpIpv4RouteConfig_XXX">
<Ipv4NetworkBlock id="13726"
StartIpList="x.y.z.t"
PrefixLength="30"
NetworkCount="10000"
... other output
, тогда этот блок будет повторяться.
a) Я хочу сопоставить на BGPIpv4Route. *, Затем пропустить 2 строки (ключевое слово "n" в awk), а затем при достижении длины префикса:
- либо заменить его случайным (25,30)
или же
- лучше, но я предполагаю, что сложнее (не пришла в голову мысль отслеживать то, что было использовано и проходить между /25../30) -> первое вхождение / 25, второе / 26...till / 30, затем откат к / 25
b) затем в следующей строке с NetworkCount в зависимости от нового значения PrefixCount вычислите его как 65536/2 ^ (32-Prefix Count)
Например: если PrefixCount в этом случае был заменен на / 25, то NetworkCount в следующей за ним строке = 65536/2 ^ 7 = 65536/128 = 512
Я нашел несколько примеров со вставкой / изменением строки после совпадающей (или с переменной счетчика X строк под соответствием), но я немного запутался с частью генерации значения, а также с изменением двух строк, где одна в зависимости от другого.
Не уверен, что я что-то понял ... моя голова немного ошеломлена тем, что я сейчас нахожу повсюду.
Заранее спасибо!