awk字符串匹配与传参
来源:互联网 发布:caxa编程助手 编辑:程序博客网 时间:2024/05/22 14:54
1.模式匹配
有名为00的文件,里面的具体内容如下:
123 abc,100196,an123 abc,100196,an113 abc,100196,an133 abc,100196,an
想要对第二个字段做模式匹配,匹配里面是否有100196这个字符串。
最开始博主用了如下方式:
#!/bin/bashapp=$1awk -F "\t" '$2~/app/ {a[$1]++} END{print length(a)}' app=$app 00
执行该脚本,传入参数:
./test.sh 100196
发现并不能得到想要的结果!最后经过很长时间的尝试,将上面的代码改为如下:
#!/bin/bashapp=$1awk -F "\t" '$2~app {a[$1]++} END{print length(a)}' app=$app 00
即可得到预期的结果!在这部分代码中,~就是表示用来匹配后面的正则表达式,告诉awk后面开始是正则语法。
2.用match方法
当然,也可以使用match方法,达到上面同样的效果:
awk -F "\t" '{if(match($2, app)>0) a[$1]++} END{print length(a)}' app=$app 00
3.两种传参方式的不同
上面的代码采用了传参的方式。在awk中,有两种传参方式,分别如下:
➜ shell#!/bin/bashapp=$1awk -F "\t" 'BEGIN{print app} {print match($2, app)}' app=$app 00awk -F "\t" -v app=$app 'BEGIN{print app} {print match($2, app)}' 00
两种方式的区别是什么呢?看看代码运行的结果:
55551001965555
两者的区别在于:用-v的方式传参,参数在BEGIN模块中就起了作用,而在另外一种传参方式中,参数在BEGIN模块中并没有起作用!
阅读全文
0 0
- awk字符串匹配与传参
- #AWK#AWK中字符串截取/匹配/字符串替换
- AWK 使用与或匹配
- awk 字符串与算数处理
- SED、AWK、GREP与或匹配
- kill与管道,awk连接字符串
- 字符串的朴素匹配与KMP匹配
- 素数与字符串匹配问题
- 字符串与文件的匹配
- python字符串搜索与匹配
- 字符串匹配暴力算法 与 字符串匹配的KMP算法
- awk匹配文本小记
- awk正则匹配
- awk 替换 匹配
- awk 匹配案例
- awk匹配整行
- awk匹配操作符
- awk中的模式匹配
- 三、内核时钟(1)
- 17.11.22,web学习第九天,还有一年,努力吧青年
- 简单的安卓小例子输入矩形长宽或圆半径计算其面积
- Mac 删除/卸载 自己安装的python
- 【Scikit-Learn 中文文档】高斯过程
- awk字符串匹配与传参
- 制作简易的个人主页(代码笔记)
- 关于百度ueditor图片上传到OSS问题解决
- 类和对象
- 大连理大学数据结构二叉树第三章第五题
- 动态规划--更新数组值为其右边最大值
- java虚拟机
- 网页div元素导出成图片 JS+html2canvas
- MySQL 数据库 数据表 增删改查