2016-03-21 32 views
0

SNMP hizmetlerinden veri ayıklamak için çalışıyorum. Çıktı böyle görünüyor.Birden çok değeri ayıklama Bash

experimental.94.4.5.1.6.16.0.0.192.221.13.147.179.0.0.0.0.0.0.0.0.1 = Hex-STRING: 00 00 00 1A 85 95 13 F4 
experimental.94.4.5.1.6.16.0.0.192.221.13.147.179.0.0.0.0.0.0.0.0.24 = Hex-STRING: 00 00 10 8E 0C F4 99 1C 
experimental.94.4.5.1.6.16.0.0.192.221.31.68.71.0.0.0.0.0.0.0.0.10 = Hex-STRING: 00 00 17 10 45 A5 13 3C 

Çıktının üç kısım olmasını istiyorum.

192.221.13.147.179 1 0000001A859513F4 
192.221.13.147.179 24 0000108E0CF4991C 
192.221.31.68.71 10 0000171045A5133C 

Tüm 3'ü awk kullanarak tek tek gerçekleştiremiyorum.

awk '{print substr($0,28,35)}' 
+2

göster. Sonra, 'substr' değişkenine atayabileceğiniz bir dizge döndürdüğünü bilin, böylece 3 değişken için 3 kez kullanabilirsiniz ve ardından üç değişken bir yazdırma ifadesinde yazdırılabilir. Alanları boşluklara ve noktalara ayırmak ve sonra ihtiyacınız olan bitleri seçip yazdırabilirsiniz. SNMP notasyonları herkesi kirletmek için yeterlidir! Ayrıca, gösterdiğiniz komut, "0.0.192.221.13.147.179.0.0.0.0.0.0" gibi çıktılar üretir; bu, üretilmesini istediğinizi söylediğiniz şeye çok benzemez. Verimlilik eksikliği. –

cevap

2

kullanabilirsiniz: Eğer 3 ayrı `awk` komutları olarak üç bölümden her nasıl

awk 'BEGIN{FS="[.: ]"}{print $10"."$11"."$12"."$13"."$14" "$23" "$27$28$29$30$31$32$33$34}' 
+0

Evet, işe yarıyor. Uygun çıktı. – nyitguy

İlgili konular