处理objects属性的最佳方法:bash中stdin中的值
你好 我启动处理objects属性的最佳方法:bash中stdin中的值,bash,scripting,sh,Bash,Scripting,Sh,你好 我启动nslookup someServer。我认为我得到了一个对象(如在权力地狱中),用空行分隔,而不是简单的STDUT。 $ nslookup someServer Server: 10.0.0.1 Address: 10.0.0.1#53 Name: someServer Address: 10.0.0.5 $ 如何获取同时具有属性名称和地址的对象 nslookup someServer | haveboth Name Address | wc -l 它是
nslookup someServer
。我认为我得到了一个对象(如在权力地狱中),用空行分隔,而不是简单的STDUT。
$ nslookup someServer
Server: 10.0.0.1
Address: 10.0.0.1#53
Name: someServer
Address: 10.0.0.5
$
如何获取同时具有属性名称和地址的对象
nslookup someServer | haveboth Name Address | wc -l
它是否存在于GNU实用程序中?您是否只是在寻找一种方法来检查您的输出中是否有这两个值 然后,您可以在一行模式下使用perl(可能不是想象中最漂亮的解决方案,但可以实现您想要的功能,并且可以扩展以轻松检查更多内容) 这将遍历您的输出,统计
名称
和地址
的出现次数,然后如果两者都超过零,则打印一条消息
如果以这种方式使用perl是一种可行的选择,那么我可以推荐这一页供以后阅读
编辑:
如果您想访问存储在属性中的值:
,您可以使用
nslookup someServer | perl -F: -lane '$v{"NAME"} = $F[1] if /Name/; $v{"ADDRESS"} = $F[1] if /Address/; END{ print $v{"ADDRESS"}." ".$v{"NAME"} if exists $v{"ADDRESS"} && $v{"NAME"} }'
这将把:
上的给定行拆分为字段分隔符,并将值存储在变量中,而不是简单的计数事件。注意,这样做只会存储最后一次发生的事件
nslookup someServer | perl -F: -lane '$v{"NAME"} = $F[1] if /Name/; $v{"ADDRESS"} = $F[1] if /Address/; END{ print $v{"ADDRESS"}." ".$v{"NAME"} if exists $v{"ADDRESS"} && $v{"NAME"} }'