如何从屏幕中删除系统重定向消息
问题描述:
我正在使用 service dhcpd status
获取DHCP服务器状态。结果是如何从屏幕中删除系统重定向消息
重定向为/ bin/systemctl状态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状态dhcpd.service
活跃
我只是不明白如何删除重定向到/ bin/systemctl状态dhcpd.service部分来自re SULT。
我试过these answers,但他们没有解决我的问题。
我错过了什么吗?还是有更好的方法来做到这一点?我不熟悉shell脚本。
在此先感谢。
答
只需使用Awk
寻找Active:
字符串和打印状态
service dhcpd status 2>&1 | awk '$1=="Active:"{print $2}'
的部分$1="Active:"
查找其第一列的值是Active:
,并打印下一列值,它是你正在寻找的状态行。
如上所示,将标准错误流stderr
重定向到stdout并在其上应用Awk
以过滤错误消息。
正如意见建议的anubhava你可以使用|&
在最新版本的bash
到stderr
重定向到stdout
为
service dhcpd status |& awk '$1=="Active:"{print $2}'
我建议更换'服务DHCPD用'服务的dhcpd状态status' 2> &1'。 – Cyrus
而不是'service dhcpd status | awk ...'你应该使用:'service dhcpd status |&awk ...' – anubhava
@Cyrus不,它不会给我想要的结果。我只想采取'积极',也删除此“重定向到/斌/ systemctl状态dhcpd.service” – Sachith