在Linux Shell中,如何使用Regex过滤其他命令的输出



在Linux Shell中,如何使用Regex过滤其他命令的输出。像在思科设备中一样,我们使用sh ver |b接口,仅将有关INT的信息提供信息。我的要求是下面命令的过滤器输出以显示" DogStatsd(V 5.12.0("和状态日期&时间。

,我可以将此O/P使用某些标准使用以自动重新启动代理。

root@adcd:〜#服务datadog -agent信息-v

collector(v 5.12.0(

状态日期:2017-05-30 08:20:13(17S前( PID:7864 平台:Linux-3.11.0-24-Generic-X86_64-with-ubuntu-13.10-Saucy Python版本:2.7.13,64bit logs:,/var/log/datadog/collector.log,syslog:/dev/log

时钟 ======

ntp偏移:0.018 s 系统UTC时间:2017-05-30 06:20:31.535928

路径 =====

conf.d:/etc/dd-agent/conf.d checks.d:/opt/datadog-agent/agent/checks.d

主机名 =========

插座主名:ADCD 主机名:adcd 插座-FQDN:ADCD

检查 ======

apache(5.0( ----------------------- - 实例#0 [确定] - 收集了12个指标,0个事件&1个服务检查

网络(5.0( ----------------------- - 实例#0 [确定] - 收集了16个指标,0个事件&0服务检查

目录(5.0( ------------------------- - 实例#0 [确定] - 收集了17个指标,0个事件&0服务检查

NTP(5.0( ----------------- - 收集0个指标,0个事件&0服务检查

磁盘(5.0( ---------------------------- - 实例#0 [确定] - 收集了24个指标,0个事件&0服务检查

发射器 ========

  • http_emitter [ok]

====================

dogstatsd(V 5.12.0(

状态日期:2017-05-30 08:20:24(7s前( PID:7859 平台:Linux-3.11.0-24-Generic-X86_64-with-ubuntu-13.10-Saucy Python版本:2.7.13,64bit 日志:,/var/log/datadog/dogstatsd.log,syslog:/dev/log

冲洗数:583466 数据包计数:333155 每秒数据包:0.0 公制数:1 事件计数:0 服务检查计数:1

====================

throcker(V 5.12.0(

状态日期:2017-05-30 08:20:29(2s前( PID:8868 平台:Linux-3.11.0-24-Generic-X86_64-with-ubuntu-13.10-Saucy Python版本:2.7.13,64bit logs:,/var/log/datadog/forwarder.log,syslog:/dev/log

队列大小:422字节 队列长度:1 冲洗数:1102592 收到的交易:879956 交易冲洗:879955 交易被拒绝:0 API密钥状态:API密钥有效

======================

跟踪代理(V 5.12.0(

不运行(端口8126(

root@adcd:〜#

我对该程序不熟悉,但是我之前不得不解决这样的问题。我正在假设您将始终使用" Dogstatsd"行启动想要的输出,并且总是以几个平等的符号结束。基于此,您可以像这样脚本脚本脚本:

#!/bin/bash
service datadog-agent info -v > /tmp/DogstatsDump.txt
LinesTotal=$(cat /tmp/DogstatsDump.txt | wc -l)
StartOfOutput=$(grep /tmp/DogstatsDump.txt -ne '^Dogstatsd (v' | cut -d':' -f 1)
LengthOfOutput=$(tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc)/tmp/DogstatsDump.txt  | grep -ne '^==========' | head -n 1 | cut -d':' -f 1 )
tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc) /tmp/DogstatsDump.txt  | head -n $(echo "$LengthOfOutput + 1" | bc)
rm /tmp/DogstatsDump.txt

我们得到定义文件长度的值,长度,直到我们击中您想要的第一行,输出结束的长度并相应地修剪。

最新更新