”!” で段落を区切られ、ツリー構成で書かれているCiscoのルータコンフィグ。
今回は、特定のユニークな番号が6桁(親番号4桁+子番号2桁)の親番号から、
親番号4桁で、どこにvlan設定やvrf設定が引っかかっているのかを抽出したいと思います。
まず頭から、初めての文字が登場するまでの ”半角スペース” を変換する
まずは、目視では1文字目に書かれた半角スペースを見落としがちなので、
それを特定の見易い文字(今回は「●」)に変換する所から始めて行きたいと思います。
set ip next-hop 192.168.100.254
↑例えば、半角スペースの変換を、
●●set●ip●next-hop●192.168.100.254
↑こうならない様に、していきます。
●●set ip next-hop 192.168.100.254
↑このように変換できるようにマクロを組んで行きたいと思います。
以下のコードを入力する事で実現できます。
実行環境としては、Ciscoのコンフィグ設定のテキストコードを全て選択し、
Excelの特定列に張り付けた時に動作します。(張り付けたシートがアクティブな場合です)
張り付ける列の特定はありません。A列でも、C列でも、同様に動作します。
※モジュールを跨いで使いたい場合や、マクロ一覧に表示させたい場合は、
Private Sub を、Subに変更します。
※●以外の文字に置き換えたい人は、leadingSpaces = leadingSpaces & “●” の、
“●”の中身を、置換変えたい文字列に書き換えてください。
Private Sub 先頭の空白のみ、置き換え文字に変換()
Dim originalText As String Dim leadingSpaces As String Dim restText As String Dim z As Long Dim ws As Worksheet Set ws = ActiveWorkbook.ActiveSheet ' アクティブシートを対象 For Each cell In ws.UsedRange originalText = cell.Value leadingSpaces = "" z = 1 ' 先頭の半角スペースをカウント Do While Mid(originalText, z, 1) = " " leadingSpaces = leadingSpaces & "●" z = z + 1 Loop ' 残りのテキストを取得 restText = Mid(originalText, z) ' セルに新しい値をセット cell.Value = leadingSpaces & restText Next cellEnd Sub
以下の内容に実行してみます。
! policy-map QoS-POLICY-COMBINED class VOICE priority 1000 set dscp ef class VIDEO bandwidth 5000 class DEFAULT bandwidth 10000 !
結果は、こうなりました。
!
policy-map QoS-POLICY-COMBINED
●class VOICE
●●priority 1000
●●set dscp ef
●class VIDEO
●●bandwidth 5000
●class DEFAULT
●●bandwidth 10000
!
続きは少ししてから

コメント