我正在尝试在第 n 次出现 2 个模式之间提取数据。
模式一: CardDetail
模式二: ]
输入文件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]
* 更新:我忘了在最初的帖子中提到我还需要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"
CardDetail
单行上出现的次数可能在 0 到数百之间变化,具体取决于设备。我需要能够在每次出现CardDetail
和下一次出现之间按字段提取所有数据,]
并将它们以 CSV 格式传输到自己的行。