免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2080 | 回复: 9
打印 上一主题 下一主题

AWK脚本: 求解一个match问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-20 10:34 |只看该作者 |倒序浏览
有这样一列文本:
208806:120;208806:240;
208806:120;
208806:120;208806:240;208806:130;
208806:120;
我想取出第二段的最后一个数字, 没有则为0, 上例求解后为:
240
0
240
0


我想用match得到它的位置, 然后再截取, 但我最大只能取到最后一个分号的位置, 而不能确定它是第几个.

请教一下, AWK中如何做到?

论坛徽章:
0
2 [报告]
发表于 2008-12-20 10:47 |只看该作者
我现在的做法是
        if (match( $187, /;[0-9]+:[0-9]+;$/ )){
            idx = match( $187, /:[0-9]+;$/)
            len = RLENGTH - 2
        }
        print substr($187, idx + 1, len )
只能匹配出最后一段, 希望可以做得更精简些, 而且只匹配第2段.

论坛徽章:
0
3 [报告]
发表于 2008-12-20 10:50 |只看该作者
为啥要用match呢?

awk -F"[;:]" '{if($4 != "") print $4;else print 0}' filename

论坛徽章:
0
4 [报告]
发表于 2008-12-20 11:03 |只看该作者
原帖由 welcome008 于 2008-12-20 10:50 发表
为啥要用match呢?

awk -F"[;:]" '{if($4 != "") print $4;else print 0}' filename


楼上的话犹如醍醐灌顶...原来FS还可以支持多个符号的, 之前真没想到

我知道该怎么做了, 谢谢!

论坛徽章:
0
5 [报告]
发表于 2008-12-20 14:59 |只看该作者
原帖由 cpiz 于 2008-12-20 11:03 发表


楼上的话犹如醍醐灌顶...原来FS还可以支持多个符号的, 之前真没想到

我知道该怎么做了, 谢谢!



即使不支持多个分隔符,那就使用管道呗

awk -F\; '{print $2}'|awk -F\: '{if($2 == "") print 0 ;else print $2}'

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
6 [报告]
发表于 2008-12-20 16:47 |只看该作者
awk --posix -F ";" '{if($2~/[0-9]{3}$/) {sub(/^.*:/,"",$2);print $2} else {print "0"} }' file

论坛徽章:
0
7 [报告]
发表于 2008-12-20 19:37 |只看该作者
学习中

论坛徽章:
0
8 [报告]
发表于 2008-12-21 21:12 |只看该作者
sed 好像有个功能 匹配成功的行前 加一条记录
那位高手能告知一下

论坛徽章:
0
9 [报告]
发表于 2008-12-21 21:36 |只看该作者
借鉴 welcome008  

awk -F "[;:]" '{print $4}' file|sed 's/^\s*$/0/'

论坛徽章:
0
10 [报告]
发表于 2008-12-22 13:19 |只看该作者
原帖由 welcome008 于 2008-12-20 10:50 发表
为啥要用match呢?

awk -F"[;:]" '{if($4 != "") print $4;else print 0}' filename


最后这样解决, 新加了一列, 如果匹配则填匹配值, 不匹配就填空
awk -v OFS='|' -F"[|;:]" '{if($11 != "" && $12 == "") print $0, $11}' head9_cdr.unl.tmp
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP