【发布时间】:2015-01-18 17:20:19
【问题描述】:
我正在尝试从 symantec 的“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 中不是那么好:( 感谢您提供任何有用的提示
【问题讨论】:
-
原始示例不可能像所写的那样工作,因为
$HOST_VAR不会在单引号中展开。 -
事实上,它在另一个脚本中替换了 HOST_VAR,所以在 ksh 中它被调用为正确的值,例如 /serverA/{x ...