awk和sed字符串处理速度比较与处理速度的测试方法

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dgd2010.blog.51cto.com/1539422/1566359

坚持不是胜利,坚持住才是胜利。

问题:比如现在有一需求,提取某个配置文件里面的ip地址,能立刻想到的就是根据字符串的规律合理的利用awk和sed来操作。

应用场景:做一套软件时,某个配置文件需要批量填写或更改已经填写好了的默认IP地址等信息(尽管在填写时IP地址可以简单的从某些文件或变量中获得,例如在Linux(CentOS6)等平台中可以借助source network congfig文件的方式)。

示例:配置文件中有这么一段,“<porttest host="192.168.0.142" application="video/portTest" timeout="10000" />”,如何取得IP地址呢?

字符串特征,该行中有两组数字,或5段数字,IP地址被“””括起来,可直接用awk截取第二段获取IP地址。

方法1,使用sed:

1
sed  -n  '/porttest /{s/.*host="//;s/".*//;p}'  . /testfile

方法1分析:假设只有第一次匹配只匹配到一行,否则可以用head -n或tail -n来截断行,当然sed也有类似的功能。此处sed中采用了多个字命令,首先查找porttest的行,再将“host=””前的字符串换成空,再把“””后面的字符串换成空,再打印出来。

方法2,使用awk:

1
grep  porttest . /testfile  awk  -F  '"'  '{print $2' }

方法2分析,同字符串特征一样,IP地址被“””括起来,可直接用awk截取第二段获取IP地址。

处理速度测试:

1
2
time  sed  -n  '/porttest /{s/.*host="//;s/".*//;p}'  . /test
time  grep  porttest . /test  awk  -F  '"'  '{print $2' }

测试结果:

image

sed的速度略微大于awk的速度,原因分析,可能由于awk处理的行中增加了grep和管道操作的原因。

本着测试的单一变量原则,处理一个相同的操作来比较一下。

1
2
time  grep  porttest . /test  sed  -n  's/.*host="//;s/".*//;p'
time  grep  porttest . /test  awk  -F  '"'  '{print $2' }

image 

在多次测试的情况下,两者基本相似,可以说是相差并不大。

因此在实际中哪种方便就使用哪种,哪种熟练就使用哪种。

补充:sed使用正则表达式较多,擅长行处理,awk擅长列处理,更多用法可以参考《awk and sed》一书。

end

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1566359

目录
相关文章
|
1月前
|
安全 测试技术
BOSHIDA DC电源模块的安全性能评估与测试方法
BOSHIDA DC电源模块的安全性能评估与测试方法
 BOSHIDA DC电源模块的安全性能评估与测试方法
|
1月前
|
安全
DC电源模块的安全性能评估与测试方法
DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面: 1. 输入安全性测试:包括输入电压范围、输入电压稳定性、输入电流范围、输入电流保护等方面的测试。测试方法可以是逐步增加输入电压或输入电流,观察模块的工作状态和保护功能。
DC电源模块的安全性能评估与测试方法
|
1月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
24 4
|
1月前
|
芯片
电容在ESD测试中的选用方法
电容在ESD测试中的选用方法
28 2
|
2月前
|
Perl
在awk中,初始化-测试-递增型的 `for` 循环
在awk中,初始化-测试-递增型的 `for` 循环
17 2
|
30天前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
8 0
|
3月前
|
敏捷开发 存储 安全
敏捷方法:什么是软件测试中的敏捷模式?
敏捷方法:什么是软件测试中的敏捷模式?
|
3月前
|
敏捷开发 机器学习/深度学习 人工智能
最实用测试方法——TIA
最实用测试方法——TIA
|
10天前
|
自然语言处理 测试技术 持续交付
现代软件测试方法与挑战
传统软件测试方法在当前快速发展的软件开发环境下面临着诸多挑战,因此,现代软件测试方法的探索与应用显得尤为重要。本文将介绍几种现代软件测试方法,并探讨其在应对软件开发挑战方面的作用。
10 0
|
25天前
|
传感器 监控 算法
【软件设计师备考 专题 】模块测试的方法和实践
【软件设计师备考 专题 】模块测试的方法和实践
68 0