2017-05-30 56 views
-4

在Linux shell中,如何使用regex來過濾其他命令的輸出。 就像在我們使用shisco |的cisco設備一樣b接口,它只會顯示有關int的信息。 我的要求是從「Dogstatsd(v 5.12.0)」和狀態日期&時間顯示的以下命令的過濾器輸出。在Linux shell中,如何使用regex來過濾其他命令的輸出。

因此,我可以使用此o/p與特定條件編寫腳本來自動重新啓動代理程序。

根@ ADCD:〜#服務datadog代理信息-v

集電極(V 5.12.0)

狀態日期:二零一七年五月三十〇日8時20分十三秒(17S前) Pid:7864 平臺:Linux-3.11.0-24-generic-x86_64-Ubuntu-13.10-saucy Python版本:2.7.13,64位 日誌:,/var/log/datadog/collector.log,syslog :/ dev/log

時鐘 ======

NTP偏移:0.018小號 系統UTC時間:2017年5月30日06:20:31.535928

路徑 =====

conf.d:在/ etc/DD-劑/ CONF。 d checks.d:/opt/datadog-agent/agent/checks.d

主機名 =========

插座主機名:ADCD 主機名:ADCD 插座FQDN :adcd

檢查 ======

阿帕奇(5.0) --------------- - 實例#0 [OK] - 收集12個指標,0事件& 1個維修檢查

網絡(5.0) ---------------- - 實例#0 [OK] - 累計16個度量,0個事件& 0服務檢查

目錄(5.0) ------------------ - 實例#0 [OK] - 累計17個度量,0個事件& 0服務檢查

NTP(5.0) --- --------- - 收集0度量標準,0個事件& 0服務檢查

disk(5。0) ------------- - 實例#0 [OK] - 累計24個度量,0個事件& 0服務檢查

發射器 ========

  • http_emitter [OK]

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

Dogstatsd(v 5.12.0)

狀態日期:2017-05-30 08:20:24(7秒前) pid:7859 平臺:Linux-3.11.0-24-generic-x86_64-with-Ubuntu-13.10-saucy Python版本:2.7 0.13,64位 日誌:,/var/log/datadog/dogstatsd.log,系統日誌是:/ dev /日誌

沖洗計數:583466 包計數:333155 包每秒:0.0 公制支數:1 事件計數:0 服務檢查計數:1

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

轉發(V 5.12.0)

狀態日期:二零一七年五月三十日8點二十分29秒(2秒前) PID:8868 平臺:Linux-3.11.0-24泛型-x86_64的,用-Ubuntu-13.10-莽撞 Python的版本:2.7.13,64位 日誌:,/var/log/datadog/forwarder.log,系統日誌是:/ dev /日誌

隊列大小:422​​個字節 隊列長度:1交易量:1102592 收到的交易:879956 交易結果fushhed:879955 交易拒絕:0 API Key Status:API K EY有效

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

跟蹤代理(V 5.12.0)

未運行(端口8126 )

根@ ADCD:〜#

回答

0

我不熟悉的程序,但我已經收到來解決這樣的問題。我假定你總是用一行'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 

我們得到定義文件的長度值,長度,直到我們打你想要的第一線,長度在輸出端,並相應修剪。

相關問題