免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 4858 | 回复: 46

[文本处理] 看能不能实现 【 已结案 】谢谢大神 [复制链接]

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-10 11:24 来自手机 |显示全部楼层
本帖最后由 Windows19 于 2016-12-12 09:09 编辑

有一个几十G log  要按原log顺序去重行,要做这样的处理
早几天前曾看到大神反馈一些思路,真是难得碰巧这位大神仙踪飘过。
综合了一下,按这思路估计能实现
目前思路
将这个大log文件重复的行做好标记,查找重复第二个以后出现的(包括第二个)做好标记,第一个不标记。这时可产生一个临时tmp文件,然后将未做标记的行输出,看这样思路不知能实现不?
不知那些语言能胜任
估计Perl能够实现的,毕竟是文本利器
但我不会Perl,不会数据库,所以发了这样一个贴子看看能不能实现

有这样要求,也希望大家能谅解一下
谢谢大家!

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2016-12-10 11:56 |显示全部楼层
去掉重复行本身很简单,比如awk命令
  1. awk '!a[$0]++' yourfile
复制代码

就是几十G文件效率怎么样?

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-10 12:03 来自手机 |显示全部楼层
本帖最后由 Windows19 于 2016-12-10 12:04 编辑
cao627 发表于 2016-12-10 11:56
去掉重复行本身很简单,比如awk命令

就是几十G文件效率怎么样?


这个会有内存溢出哦

另外效率慢些不是问题,最重要能实现

论坛徽章:
9
操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-17 17:50:32操作系统版块每日发帖之星
日期:2016-08-01 06:20:0015-16赛季CBA联赛之广东
日期:2016-08-01 16:01:57操作系统版块每日发帖之星
日期:2016-08-04 06:20:00IT运维版块每日发帖之星
日期:2016-08-07 06:20:00操作系统版块每日发帖之星
日期:2016-08-07 06:20:0015-16赛季CBA联赛之福建
日期:2017-03-07 17:14:27
发表于 2016-12-10 13:08 |显示全部楼层
python 也可以

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-10 13:27 来自手机 |显示全部楼层
本帖最后由 Windows19 于 2016-12-10 13:28 编辑
Riet 发表于 2016-12-10 13:08
python 也可以


Python也可以?Python我这也有环境能跑代码哦

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-10 13:42 来自手机 |显示全部楼层
Riet 发表于 2016-12-10 13:08
python 也可以

看来Python也很厉害哦

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2016-12-10 19:30 |显示全部楼层
@Windows19试试
  1. for((i=1;i<`cat file|wc -l`;i++)); do line=$(sed -n ${i}p file); sed -i "$((i+1))"',${/'"$line"'/d}' file; done
复制代码

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-10 19:51 |显示全部楼层
本帖最后由 Windows19 于 2016-12-10 20:33 编辑


初步测了简单一些内容,执行了一下,目测没看出问题

但再测复杂些字符时 会返回下面报错信息    估计是不支持某些字符内容引起的  不知道还能不能修改sed支持识别复杂字符内容不

sed:-e 表达式 #1,字符 27:未终止的地址正则表达式
sed:-e 表达式 #1,字符 23:未终止的地址正则表达式
sed:-e 表达式 #1,字符 27:未终止的地址正则表达式
sed:-e 表达式 #1,字符 24:未终止的地址正则表达式



论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2016-12-10 22:27 |显示全部楼层
回复 8# Windows19

试试
  1. for((i=1;i<`cat file|wc -l`;i++)); do line="$(sed -n ${i}p file |sed 's/\\/\\\\/g' |sed 's/\//\\\//g')"; sed -i "$((i+1)),\${/$line/d}" file; done
复制代码


论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2016-12-11 08:00 |显示全部楼层
cao627 发表于 2016-12-10 22:27
回复 8# Windows19

试试


又测试了下面这些相当很复杂内容  也是有很多返回信息  出来结果不对

gfd163F4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F 4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F4D 6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6 e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
  45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
'\.\;jhyuty867uihb\'.jkjbh
`~sdfs.;f[f/.,';'fsff89fuJHBK;'sdHJKSDFgedSDB][[[\S\Jhjf\'.,s,njk./,''.FENGEKGkssd'\.sn4f
54eg[erg]eggmkgg.e'gnjgngdngf'\gnkd/;fg
gfd163F4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
s''\;./khfgddf14sxdg
/kjgft[hhnvd]fgvyg\hjgj\\yhg.hgjhdy656tfh;jkg  
45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F 4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F4D 6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
45d6 e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
gfd163F4D6GH4RY4RTG21d65fh45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
  45d6e!@#$%^&*()_+{}:"|<>?-=[];'\,./~rsfetfg
'\.\;jhyuty867uihb\'.jkjbh
`~sdfs.;f[f/.,';'fsff89fuJHBK;'sdHJKSDFgedSDB][[[\S\Jhjf\'.,s,njk./,''.FENGEKGkssd'\.sn4f
54eg[erg]eggmkgg.e'gnjgngdngf'\gnkd/;fg
s''\;./khfgddf14sxdg
/kjgft[hhnvd]fgvyg\hjgj\\yhg.hgjhdy656tfh;jkg  

返回的报收信息
sed:-e 表达式 #1,字符 0:前面没有正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 54:未终止的地址正则表达式
sed:-e 表达式 #1,字符 0:前面没有正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 53:未终止的地址正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 54:未终止的地址正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 56:未终止的地址正则表达式
sed:-e 表达式 #1,字符 104:未终止的地址正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 55:未终止的地址正则表达式
sed:-e 表达式 #1,字符 81:未终止的地址正则表达式
sed:-e 表达式 #1,字符 55:未终止的地址正则表达式
sed:-e 表达式 #1,字符 0:前面没有正则表达式
sed:-e 表达式 #1,字符 81:未终止的地址正则表达式
sed:-e 表达式 #1,字符 54:未终止的地址正则表达式
sed:-e 表达式 #1,字符 81:未终止的地址正则表达式
sed:-e 表达式 #1,字符 55:未终止的地址正则表达式
sed:-e 表达式 #1,字符 80:未终止的地址正则表达式
sed:-e 表达式 #1,字符 56:未终止的地址正则表达式
sed:-e 表达式 #1,字符 104:未终止的地址正则表达式




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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP