Regex 在Linux shell中,如何使用正则表达式过滤其他命令的输出。
在Linux shell中,如何使用正则表达式过滤其他命令的输出。 与cisco设备一样,我们使用SHVER | b接口,该接口仅显示有关int的信息。 我的要求是从“Dogstatsd(v 5.12.0)”和状态日期和时间过滤以下命令的输出以显示 因此,我可以使用此o/p和特定条件来编写脚本以自动重新启动代理 root@adcd:~#服务数据狗代理信息-v 收集器(V5.12.0) 状态日期:2017-05-30 08:20:13(17秒前) Pid:7864 平台:Linux-3.11.0-24-generic-x86_64-with-Ubuntu-13.10-saucy Python版本:2.7.1364位 日志:,/var/log/datadog/collector.log,syslog:/dev/log 时钟 ====== NTP偏移量:0.018秒 系统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个服务检查 发射器 ========Regex 在Linux shell中,如何使用正则表达式过滤其他命令的输出。,regex,linux,bash,shell,ubuntu,Regex,Linux,Bash,Shell,Ubuntu,在Linux shell中,如何使用正则表达式过滤其他命令的输出。 与cisco设备一样,我们使用SHVER | b接口,该接口仅显示有关int的信息。 我的要求是从“Dogstatsd(v 5.12.0)”和状态日期和时间过滤以下命令的输出以显示 因此,我可以使用此o/p和特定条件来编写脚本以自动重新启动代理 root@adcd:~#服务数据狗代理信息-v 收集器(V5.12.0) 状态日期:2017-05-30 08:20:13(17秒前) Pid:7864 平台:Linux-3.11.0-
- http_发射器[确定]
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
我们得到定义文件长度的值,到达您想要的第一行之前的长度,输出结束的长度,并相应地修剪