免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于提取连续长度字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-24 14:40 |只看该作者 |倒序浏览
以,为分隔符的数据,如果第三列中包含了连续长度超过5位的(0-9数字)的记录,则提取所在行

sddsfs,sdfjdfgdfg,123,iuoi
sddsfs,sdfjdfgdfg,123456,iuoi
sddsfs,sdfjdfgdfg,A123456B,iuoi
sddsfs,sdfjdfgdfg,aaaaaaa,iuoi

提取
sddsfs,sdfjdfgdfg,123456,iuoi
sddsfs,sdfjdfgdfg,A123456B,iuoi

这个如何用awk或grep实现,哪个效率更好

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 2015-01-24 15:09 |只看该作者
本帖最后由 Herowinter 于 2015-01-24 15:11 编辑

回复 1# Qiangxi

目测是这样,可以吗?

grep -P "^([^,]*,){2}[^,]*[0-9]{6,}" urfile


   

论坛徽章:
0
3 [报告]
发表于 2015-01-24 15:15 |只看该作者
Herowinter 发表于 2015-01-24 15:09
回复 1# Qiangxi

目测是这样,可以吗?


感谢,测试后可以
再追加一下,如果是第三列或第四列包含了连续长度超过5位的(0-9数字)的记录,该怎么提取

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 10:16:53
4 [报告]
发表于 2015-01-24 15:37 |只看该作者
awk 'BEGIN{FS=","}{if(length($3)>5 || length($4)>5){print $0}}' inputfile | grep "[0-9]\{5,\}"

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
5 [报告]
发表于 2015-01-24 15:49 |只看该作者
回复 3# Qiangxi


    能告诉我你们搞这些脚本都是干什么工作的吗?好像对编程的要求又不高啊

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
6 [报告]
发表于 2015-01-24 16:49 |只看该作者
本帖最后由 rulebook 于 2015-01-24 16:50 编辑
  1. awk -vFS=',' '$3~/[0-9]{5}/' o
复制代码
PS:
  1. [root@salt sh]# awk -V
  2. GNU Awk 4.0.2
  3. Copyright (C) 1989, 1991-2012 Free Software Foundation.

  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 3 of the License, or
  7. (at your option) any later version.

  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. GNU General Public License for more details.

  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see http://www.gnu.org/licenses/.
复制代码
若awk4.0以下版本,{}不能直接使用,需+ --re-interval

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2015-01-24 18:42 |只看该作者
回复 3# Qiangxi


    grep -P "^([^,]*,){2,3}[^,]*[0-9]{6,}" urfile

论坛徽章:
0
8 [报告]
发表于 2015-01-25 14:01 |只看该作者
[root@wmsvmpc ~]# cat sql.log
sddsfs,sdfjdfgdfg,123,iuoi
sddsfs,sdfjdfgdfg,123456,iuoi
sddsfs,sdfjdfgdfg,A123456B,iuoi
sddsfs,sdfjdfgdfg,aaaaaaa,iuoi
sddsfs,sdfjdfgdfg,a1234a1456a,iuoi
[root@wmsvmpc ~]#
[root@wmsvmpc ~]#
[root@wmsvmpc ~]#
[root@wmsvmpc ~]#  sed -n '/\(.*,\)\{2\}.*[0-9]\{6,\}.*/p' sql.log
sddsfs,sdfjdfgdfg,123456,iuoi
sddsfs,sdfjdfgdfg,A123456B,iuoi
[root@wmsvmpc ~]#

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
9 [报告]
发表于 2015-01-25 23:29 |只看该作者
  1. awk --re-interval -F, '$3~/[0-9]{5,}/' f.txt
复制代码

论坛徽章:
1
2015亚冠之鹿岛鹿角
日期:2015-05-12 13:04:44
10 [报告]
发表于 2015-01-26 11:13 |只看该作者
awk -vFS=',' 'length($3)>5&&$3~/[0-9]+/{print $0}' ufiles
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP