awk使用正则截取数据

需求

通过awk 截取ping 命令的结果的时间返回值,通过返回值的大小控制打印大于3ms的结果显示;

数据源如下

在这里插入图片描述

64 bytes from 192.168.2.119: icmp_seq=24 ttl=64 time=4.157 ms

shell代码

ping 192.168.2.18 | awk '{times_part=$7; match(times_part, "[0-9]+");times=substr(times_part, RSTART, RLENGTH);if(times > 3) print $0}'

awk 16进制转数字

echo ff | awk '{a=strtonum("0x"$1);print a;}'

在这里插入图片描述

awk 位运算

# 与运算
echo 0x0f | awk '{print and(strtonum($1),0xff);}'
# 左移8位
echo 0xf0 | awk '{print lshift(strtonum($1), 8);}'
# 右移8位
echo 0x0f | awk '{printf("0x%02x\n", rshift(strtonum($1),8));}'

awk 字符串的比较

echo hello | awk -f cm.awk
{ 
	# cm.awk
	# 判断字符串是否为空
	str=$0
	if (str == "")
		printf("hello,i'm empty str!\n");
	if (str=="hello")
		printf("i'm equal to hello!\n");
}

awk 字符串分割

echo "a b c d e" | awk -f cm.awk
{
	# cm.awk
	str=$0;
	len=split(str, str_arr, " ");
	for ( i = 1; i <= len; i++) {
		printf(" [%d]:#%s# ", i, str_arr[i]);
	}
}

注意点

  1. 使用awkmatch功能,matchRSTARTRLENGTH值结合substr函数使用;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值