我正在尝试从赛门铁克的“lltstat”输出中提取所需的行
以前,我正在使用这段代码(HOST_VAR被循环中所需的主机替换,如serverA):
lltstat -nvv active | awk '/$HOST_VAR/{x=NR+2;next}(NR<=x){print}'
但现在情况发生了变化,行数变化(可以是0,但也是10 ..)
输出如下:
LLT node information:
Node State Link Status Address
* 0 serverA OPEN
eth0 UP AA:BB:DD:CC:00:11
eth1 UP AA:BB:DD:CC:00:11
igbe3 UP AA:BB:DD:CC:00:11
1 Bserver OPEN
igbe2 UP AA:BB:DD:CC:00:11
ixgbe1 DOWN AA:BB:DD:CC:00:11
eth3 UP AA:BB:DD:CC:00:11
我可以使用的工具只有sed和awk(grep只是最简单的没有正则表达式等)
我正在考虑使用服务器名称;下一个;并打印所有具有“:”的行,因为它应该只在那些MAC地址中,但我在awk中不是那么好:(
感谢您提供任何有用的提示
答案 0 :(得分:2)
假设OPEN
仅出现在服务器行上,这应该可以。
lltstat -nvv active | awk -v HOST_VAR=$HOST_VAR '$0 ~ HOST_VAR{a=1; next} a&&/OPEN/{exit} a{print}'