我有这个要求,show mac address table
一个开关将列出 1000 个条目。
文件1: switch_1#显示mac地址表 AA:AA:AA:AA:AA:AA 端口 47 BB:BB:BB:BB:BB:BB 端口 48 . . . DD:DD:DD:DD:DD:DD 端口 50
文件2: switch_2#显示mac地址表 AA:AA:AA:AA:AA:AA 端口 47 BB:BB:BB:BB:BB:BB 端口 48 . . . DD:DD:DD:DD:DD:DD 端口 45
我需要找到一种方法来显示包含的行DD:DD:DD:DD:DD:DD
,一旦发生这种情况,它应该在上面搜索几行并打印包含主机名的行
所以输出应该是这样的:
switch_1#显示mac地址表 DD:DD:DD:DD:DD:DD 端口 50 switch_2#显示mac地址表 DD:DD:DD:DD:DD:DD 端口 45
file1
,file2
存储在同一目录中(这些只是示例,大约有 100 多个文件/开关,MAC 需要与开关名称一起过滤)
awk 解决方案
如果我们得到一行带有哈希的行,则将其存储在变量 a 中。
如果我们得到一行具有匹配 MAC 地址的行,则打印变量 a 以及当前行。
sed 解决方案
如果我们得到一行带有哈希的行,请将其放在保存空间 (
h
) 中。如果我们得到一个匹配 MAC 地址的行,追加到模式空间 (
H
),将保持空间复制到模式空间 (g
),打印模式空间 (p
)