存档

文章标签 ‘awk’

实用小工具推荐2:正则表达式测试器

2016年5月10日 没有评论

今天为大家推荐的是一个正则表达式测试器:RegexTester。名为测试器,但它实际上提供了正则查找、替换、结果导出等功能,非常适合于日常开发和测试工作。

首先说一下为什么要用到这个工具。有时候我们需要做一些文本处理工作,比如日志,要从文本中提取相关信息。通常情况下,这些信息是有规律的,比如:每行为一条记录,每条记录包含相同个数和意义的字段。这种有规律的文本是很容易处理的,可以用shell中的awk来处理。但有时候就没那么规律,比如下边这2行(实际中会有成千上万行)数据,我希望从中提取uri和sz参数的值,不太容易用awk进行分割处理。

http://pos.baidu.com/acbm?rdid=2494569&dc=2&di=u2494569&dri=0&dis=0&dai=2&ps=9801×0&coa=tn%3Dtemplate_inlay_all_mobile%26adn%3D1%26originUrl%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617_2.html%26pl%3D4%26id%3Du2494569&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1458484701051&ti=%E9%87%8D%E7%94%9F%E4%B9%8B%E5%A7%94%E8%BA%AB%20%E4%BD%9C%E8%80%85%EF%BC%9A%E4%B8%8A%E4%B9%99(2)_bl%E6%96%87%E5%BA%93&ari=1&dbv=0&drs=3&pcs=360×487&pss=360×9938&cfv=0&cpl=0&chi=12&cce=true&cec=UTF-8&tlm=1458455901&ltu=http%3A%2F%2Fm.blwen.com%2F%3Fhost%3Dwww.blwen.com%26src%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617_2.html&ltr=http%3A%2F%2Fm.blwen.com%2F%3Fhost%3Dwww.blwen.com%26src%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617.html&ecd=1&psr=1081×1794&par=1080×1794&pis=-1x-1&ccd=32&cja=false&cmi=0&col=zh-CN&cdo=0&tcn=1458484702&sz=324×270&qn=45b2c0ccd2d70f2d&tt=1458484700976.95.429.535,

http://pos.baidu.com/acgm?sz=320×48&rdid=2521903&dc=2&exps=112101&di=u2521903&dri=0&dis=3&dai=1&ps=0x0&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1458483692530&ari=1&dbv=0&drs=1&pcs=360×54&pss=360×54&cfv=0&cpl=0&chi=1&cce=true&cec=GBK&tlm=1455584508&ltu=http%3A%2F%2Fm.fun.tv%2Fvplay%2F%3Fvid%3D8041968%26malliance%3D2242&liu=http%3A%2F%2Fadm.funshion.com%2Fmat%2F20160216170148-12656951.html&ltr=http%3A%2F%2Fm.fun.tv%2Fvplay%2F%3Fvid%3D8041968%26malliance%3D2242&ecd=1&psr=721×1280&par=720×1280&pis=360×54&ccd=32&cja=false&cmi=0&col=zh-CN&cdo=0&tcn=1458483693&qn=3fe86ec3e856eb67&tt=1458483692449.94.1233.1236,

但实际上这样的数据还是有一定规律的,用下边的正则就可以方便的把想要的字段提取出来。

http://pos.baidu.com/(.*?)\?(.*?)sz=(.*?)&(.*)

打开测试器,将正则表达式和文本填入对应的框内,工具条上选择“多行模式”,再点击“运行”,结果就出来了。结果框内点右键就可以导出csv文件,再用awk处理就方便多了。

正则表达式测试器

日常工作中免不了写几个正则表达式,用这个小工具测测表达式的准确性,可以节省不少时间。

另外,官网还提供了正则表达式的教程,可以去看看。

 

分类: 工具 标签: , ,

awk用法总结

2015年8月19日 没有评论

awk是Linux中常用的文本处理程序。现总结常见的用法,持续更新中。

1.查找特定文本并输出行号,比如file的第一列为日期,查找08.19首次出现的位置

awk ‘{ if($1 ~ “19/Aug”) {print FNR;exit} }’ file

2.字段统计

awk ‘{count[$1]++} END {for (i in count) print i, count[i]}’ log

3.通过system调用外部命令,如将学生成绩写入redis数据库的有序集合中以便进行排序等操作

awk -F” ” ‘{system(“redis-cli ” “zincrby ” “StudentScore ” $2 ” ” $1)}’ studentScore.csv

 

分类: Shell, 资料, 运维 标签: , ,