ssh 到遠端設備並拉動資料包遺失計數器。
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
上述命令的輸出:
Tot Pkt Lost : 1083761951
我需要一個命令來僅提取 Tot Pkt 遺失的號碼。
答案1
如果你有 GNU grep
,你可以這樣做:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -oP 'Tot Pkt Lost\s*:\s*\K\d+'
1083761951
但awk
這裡可能更簡單、更便攜:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
awk '/Tot Pkt Lost/{print $NF}'
1083761951
答案2
在這種情況下不需要使用-E
with,grep
因為您不使用擴充正規表示式。您還可以在本機電腦而不是遠端系統上擴展通配模式,這可能會產生錯誤的結果。
因此你的命令應該重寫為
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost'
我在這裡使用-F
withgrep
是因為我匹配的是字串,而不是正規表示式。我還引用了應在遠端主機上執行的命令,以便在此處擴展通配模式,而不是在本地擴展。
這應該給你相同的輸出:
Tot Pkt Lost : 1083761951
要從中僅獲取數字,只需將其傳遞grep -E -o '[[:digit:]]+'
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost' |
grep -E -o '[[:digit:]]+'
或者,使用sed
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
sed -n 's/^Tot Pkt Lost.*: //p'
這將匹配Tot Pkt Lost
每行開頭及其:
後面的字串。它將刪除匹配的字串並列印該行的其餘部分。所有其他數據都將被丟棄。