免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于sed的使用【已解决】 [复制链接]

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-07-06 14:20:4715-16赛季CBA联赛之上海
日期:2017-08-21 22:14:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-10-23 19:37 |只看该作者 |倒序浏览
本帖最后由 irockey 于 2017-10-27 13:32 编辑

有如下格式文本76440,20171020225502,0.0,20171020230500
76446,20171020225502,132000.0,20171020230500
76447,20171020225502,137.5,20171020230500
76448,20171020225502,142.5,20171020230500
76449,20171020225502,147.5,20171020230500
76442,20171020225502,1991000.0,20171020230500
76444,20171020225502,132000.0,20171020230500
76441,20171020225502,4.6333798E9,20171020230500
76445,20171020225502,132000.0,20171020230500
76443,20171020225502,1.36343002E9,20171020230500
76440,20171020230002,0.0,20171020231000
76441,20171020230002,4.6333798E9,20171020231000
76446,20171020230002,132000.0,20171020231000


文件以,号分隔,第二个字段为时间戳,想将时间戳从20171020230000到20171021000000这个时间的行删除
我用正则测试了
\d+,201710(2023|2100|2123|2200)\d{4},(.*),\d+

想学一学sed


sed -nr '/\\d\+,201710\(2023|2100|2123|2200\)\\d{4},\(.*\),\\d\+/p' 2017-10 | wc -l
1708

测试结果是不对的
使用notepad正则测试结果只有480行
想知道哪里出问题了

QQ截图20171023193042.png (98.5 KB, 下载次数: 30)

notepad

notepad

2017-10.zip

315.59 KB, 下载次数: 7

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-07-06 14:20:4715-16赛季CBA联赛之上海
日期:2017-08-21 22:14:34
2 [报告]
发表于 2017-10-23 19:43 |只看该作者
其实文件很小,只有2.8M,但cu不让上传非压缩格式的附件

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2017-10-23 19:47 |只看该作者
回复 1# irockey

WYTIWYC(What You Think Is What You Code)

文件以,号分隔第二个字段为时间戳,想将时间戳从20171020230000到20171021000000这个时间的行删除

$ awk -F, '{if(20171020230000<=$2&&$2<=20171021000000)next}1' FILE
76440,20171020225502,0.0,20171020230500
76446,20171020225502,132000.0,20171020230500
76447,20171020225502,137.5,20171020230500
76448,20171020225502,142.5,20171020230500
76449,20171020225502,147.5,20171020230500
76442,20171020225502,1991000.0,20171020230500
76444,20171020225502,132000.0,20171020230500
76441,20171020225502,4.6333798E9,20171020230500
76445,20171020225502,132000.0,20171020230500
76443,20171020225502,1.36343002E9,20171020230500

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-07-06 14:20:4715-16赛季CBA联赛之上海
日期:2017-08-21 22:14:34
4 [报告]
发表于 2017-10-23 20:09 |只看该作者
回复 3# jason680

谢谢大神awk这个看懂了,不过我是想学习下sed的功能
学习一下正则的相关内容,因为发现正则很有必要学习,就想拿sed来练手

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2017-10-23 20:55 |只看该作者
回复 4# irockey

正则很有必要学习 ==> grep, awk, perl, ...

20171020230000 -  20171021000000

2017102023.... => 2017102023\d{4}


$ grep -vP '^\d+,2017102023\d{4},' FILE

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-07-06 14:20:4715-16赛季CBA联赛之上海
日期:2017-08-21 22:14:34
6 [报告]
发表于 2017-10-23 21:56 |只看该作者
回复 5# jason680

谢谢,多找机会练习下正则!

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
7 [报告]
发表于 2017-10-24 09:24 |只看该作者
20171020230000到20171021000000

awk -F, '$2<20171020230000||$2>20171021000000' file

论坛徽章:
8
CU十四周年纪念徽章
日期:2017-08-28 17:16:1915-16赛季CBA联赛之北控
日期:2018-03-29 11:39:0615-16赛季CBA联赛之上海
日期:2018-05-21 10:46:10技术图书徽章
日期:2018-09-03 13:54:18技术图书徽章
日期:2018-09-03 13:54:2815-16赛季CBA联赛之四川
日期:2020-10-15 09:21:4720周年集字徽章-20	
日期:2020-10-28 13:53:0220周年集字徽章-庆
日期:2020-10-28 14:09:12
8 [报告]
发表于 2017-10-24 11:34 |只看该作者
  1. awk -F ',' '!($2 >= "20171020230000" && $2 <= "20171021000000")' file
复制代码

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
9 [报告]
发表于 2017-10-24 13:57 |只看该作者
回复 1# irockey


  1. sed -nr '/[0-9]+,201710(2023|2100|2123|2200)[0-9]{4},(.*),[0-9]+/p' 2017-10 | wc -l
复制代码

输出:
480

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-07-06 14:20:4715-16赛季CBA联赛之上海
日期:2017-08-21 22:14:34
10 [报告]
发表于 2017-10-24 21:57 |只看该作者
回复 7# chengchow

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP