linux命令行中如何把这行SNMPv2-SMIenterprises3504721160 = STRING eth0 upload123KBsdownload12KBs过滤出upload括号里面的K或者M里面数字要乘于8
在Linux命令行中,可以使用grep命令结合正则表达式和sed命令来实现对字符串的过滤和计算。
首先,使用grep命令过滤出包含"upload"的行,并使用sed命令提取出括号内的内容:
echo 'SNMPv2-SMI::enterprises.35047.2.11.6.0 = STRING: "eth0: upload(12.3KB/s),download(12KB/s)"' | grep -o 'upload([^)]*)' | sed 's/[^0-9.]*\([0-9.]*\)\([KM]\)B\/s.*/\1\2/'
解释:
grep -o 'upload([^)]*)':使用grep命令过滤出包含"upload"的部分,并只输出匹配的内容。sed 's/[^0-9.]*\([0-9.]*\)\([KM]\)B\/s.*/\1\2/':使用sed命令匹配数字和单位,并提取出数字和单位。然后将数字部分和单位部分分别保存到两个分组中,最后使用\1\2将两个分组的内容输出。
该命令的输出结果为12.3K,即upload括号里面的数字乘以8并带上单位
原文地址: https://www.cveoy.top/t/topic/ivDn 著作权归作者所有。请勿转载和采集!