如何从屏幕中删除系统重定向消息

时间:2017-07-07 05:32:17

标签: bash shell awk

我正在使用dhcp服务器状态 service dhcpd status。结果是

  

重定向到/ bin / systemctl status dhcpd.service   ●dhcpd.service - DHCPv4服务器守护程序      加载:已加载(/usr/lib/systemd/system/dhcpd.service;已启用;供应商预设:已禁用)

     

活跃:从......开始活跃(正在运行)

我只想提取active并发送到php(Zend)服务器。为此,我使用了

service dhcpd status | awk '{for (I=1;I<=NF;I++) if ($I == "Active:") {print $(I+1)};}'

结果是

  

重定向到/ bin / systemctl status dhcpd.service

     

活性

我只是不明白如何从结果中删除重定向到/ bin / systemctl status dhcpd.service 部分。

我尝试了these answers,但他们没有解决我的问题。

我错过了什么吗?或者有更好的方法吗?我不熟悉shell脚本。

提前致谢。

1 个答案:

答案 0 :(得分:2)

只需使用Awk查找Active:字符串并打印状态

即可
service dhcpd status 2>&1 | awk '$1=="Active:"{print $2}'

部分$1="Active:"会查找第一列值为Active:的行,并打印下一个列值,这是您要查找的状态。

如上所述,将stderr,标准错误流重定向到stdout并对其应用Awk以过滤错误消息。

根据anubhava在评论中的建议,您可以在|&的最新版本中使用bashstderr重定向到stdout

service dhcpd status |& awk '$1=="Active:"{print $2}'