2つのパターンのn番目の出現の間のデータを抽出しようとしています。
パターン1: CardDetail
パターン2: ]
入力ファイルにinput.txt
は、各行に含まれる内容が異なる数千行が含まれています。データの取得に関係する行には、常にCardDetail
行のどこかに含まれます。を使用して一致する行を見つけるのは簡単ですawk
が、各一致間でデータを取得し、それぞれを別々の行に配置することは、私が不足しているところです。
input.txt
ネットワーク機器および接続されている/子デバイスに関するデータが含まれています。これは次のようになります。
DeviceDetail [baseProductId=router-5000, cardDetail=[CardDetail [baseCardId=router-5000NIC1, cardDescription=Router 5000 NIC, cardSerial=5000NIC1], CardDetail [baseCardId=router-5000NIC2, cardDescription=Router 5000 NIC, cardSerial=5000NIC2]], deviceSerial=5000PRIMARY, deviceDescription=Router 5000 Base Model]
DeviceDetail [baseProductId=router-100, cardDetail=[CardDetail [baseCardId=router-100NIC1, cardDescription=Router 100 NIC, cardSerial=100NIC1], CardDetail [baseCardId=router-100NIC2, cardDescription=Router 100 NIC, cardSerial=100NIC2]], deviceSerial=100PRIMARY, deviceDescription=Router 100 Base Model]
*更新:最初の投稿で、デバイスのPARENTシリアル(deviceSerial
)も一緒にリストされている必要があることを忘れました。*
私がどのようoutput.txt
に見せたいかは次のようなものです:
"router-5000NIC1","Router 5000 NIC","5000NIC1","5000PRIMARY"
"router-5000NIC2","Router 5000 NIC","5000NIC2","5000PRIMARY"
"router-100NIC1","Router 100 NIC","100NIC1","100PRIMARY"
"router-100NIC2","Router 100 NIC","100NIC2","100PRIMARY"
1つの回線での発生回数はCardDetail
、デバイスに応じて0から数百の間で変化する可能性があります。CardDetail
発生するたびから次の発生までの間にフィールドごとにすべてのデータを抽出]
し、CSV形式で独自の行に転送できるようにする必要があります。