免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请有点时间的大神给写个删除代码吧 [复制链接]

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-25 17:34 |只看该作者 |倒序浏览
本帖最后由 bmne 于 2016-07-25 19:13 编辑

遇到一个问题,求代码


共3列,中间是32位的md5  

要求:遇到下面这样的就整个行全部删除掉,只保留剩余的其它类型

jagn890        c57562653c783faeb8b6cd917ef258c1        j.aesiom
2d24100        fe2cc92855170913c530b9ae29ae7484        geanga.mebeom
x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om


如果方便,请大神随手给个非(反向的)


谢谢大神,辛苦了



我自己尝试但真不会表达这个32,不好意思
awk '/^[^.{32}w+$]+.{32}w+$[^.{32}w+$]+$/'

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
2 [报告]
发表于 2016-07-25 19:22 |只看该作者


怎回事?我说的不明白吗?现在真担心说不明白


论坛徽章:
0
3 [报告]
发表于 2016-07-25 22:23 |只看该作者
sed -r '/.+\s+\w{32}\s+.+/d' 4     

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
4 [报告]
发表于 2016-07-25 22:43 |只看该作者
意思是总共三列, 如果第一列和第三列不为32位,第二列为32位 这样的行不打印对吗?

我写了一个,你看看符合需求不。。
  1. [root@ethan test]# cat file
  2. jagn890        c57562653c783faeb8b6cd917ef258c1        j.aesiom
  3. abcdefghigklmnopqrstuvwxyz123456 llllllllllmmmmmmmmmmeeeeeeeeee12 ooooooooooppppppppppqqqqqqqqqqdc
  4. 2d24100        fe2cc92855170913c530b9ae29ae7484        geanga.mebeom
  5. x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om
  6. x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om    falsjfldsf
  7. sadjfljasfljsladj flasdlfjlsdajf alsdjflsdjal
  8. [root@ethan test]#


  9. [root@ethan test]# awk 'NF==3&&length($1)!=32&&length($2)==32&&length($3)!=32{next}{print}' file
  10. abcdefghigklmnopqrstuvwxyz123456 llllllllllmmmmmmmmmmeeeeeeeeee12 ooooooooooppppppppppqqqqqqqqqqdc
  11. x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om    falsjfldsf
  12. sadjfljasfljsladj flasdlfjlsdajf alsdjflsdjal
  13. [root@ethan test]#
复制代码

论坛徽章:
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 [报告]
发表于 2016-07-25 23:32 |只看该作者
回复 2# bmne

>> ...我说的不明白吗?...

1. 输入 input data
2. 处理过程 procedure
3. 输出 output data

--------------------------------------------

1. 输入 input data
   符合/匹配: 有
  不符合/不匹配: 没有

2. 处理过程 procedure
愈详实愈好...

3. 输出 output data
  未提供...


   

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
6 [报告]
发表于 2016-07-26 08:20 |只看该作者
回复 5# jason680


努力学习大神的严谨作风

我确实偷工减料了,主要感觉很简单的事情,说一下即可,都会明白的

以后努力改正。谢谢

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
7 [报告]
发表于 2016-07-26 08:21 |只看该作者


回复 3# 请叫我俊哥哈
回复 4# hz_oracle






两位大神,我下面说的这些纯技术探讨

首先感谢理解我的需求,理解很正确。我认真地运行了两位的代码,1.6GB的文档。同时把运行的结果又进行了比较对比

结论:

一、这个代码sed -r '/.+\s+\w{32}\s+.+/d'
    很牛的代码,计算正确。
    看我一楼,我也试图往这方面想,能力问题,我想不出来。
    唯一遗憾,效率慢,不客气说,是下面的另一个代码的十倍,客气说,慢七八倍一点问题也没有

二、这个代码awk 'NF==3&&length($1)!=32&&length($2)==32&&length($3)!=32{next}{print}'
    有问题,问题还不少。唯一优点,效率高
    指出问题:
    1、鉴别32位MD5不准,下面这样的是32位符号的也给删除掉了

       a19000921        manager58149901.ballyfinance.fer                77777
       h2083414                yanxinliang200.80331yagaoqcomucn                126600
       k2389wgi                ww.wangle.iwangleijp.ydyso.mo.cp                12hr59
      
    2、第二列是32位MD5 ,  第三列同时是32位符号的或者说第三列末尾是32位MD5并末尾含有空格的 ,这样的识别不出来,反而给保留了

       Ethbdripinkek e51fe7ef24ca912bf34d522cc17f98a7          manager58149901.ballyfinance.fer
       Evoroy        e282c1a8d7603393dae8905ebbfdabca          yanxinliang200.80331yagaoqcomucn
       ExpinnylikE   2cf0e66232114aad38f6f60fba286918          ww.wangle.iwangleijp.ydyso.mo.cp
       FENjtUAQIU    c58231d9bb139b009a2a754850d98ad6          lixu042162000iuluxu0421198ulu.rt
       FN    CFG        64d7bfa1071d6c88b657cb2cb9b2fc00         
       FhsK    ming     3f33cd3a9a6eaf7c593e71ae2f2e6771         
       Fnuse    face    add4df170e88a333c20781293fc5417e         
       Fat    D         6a25d87502e3f2db5a2a50222bb99a55         
       Fnyna    Wxqg    88ef799d601d85387c36e6f6e1101269               

    3、另外,这个代码取非(相反的),我验证很小文档正确,验证大文档运行错误,请帮助我
         取非:awk '!NF==3&&length($1)!=32&&length($2)==32&&length($3)!=32{next}{print}'




谢谢大神们帮我写代码,辛苦



论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
8 [报告]
发表于 2016-07-26 09:03 |只看该作者
  我表示很无奈

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
9 [报告]
发表于 2016-07-26 09:03 |只看该作者
说实话, 你的问题可能真如你自己所说的, 本很简单, 但是你的描述确实让人费解, 或者说比较男理解
这里你1楼的问题, 我理解是你源文档就只有3列, 然后要过滤掉第二列为MD5型的32位的列, 然后你又说来个 非(反向的), 可不可以理解成把这些第二列为MD5的行拎出来
再结合你7楼的, 其实你7楼里二中的2我是没看明白的
或许你别说这么多, 只给出你源文档中的一部分,然后把对应要得到的再列出来, 这样会好很多

比如:

src:
jagn890        c57562653c783faeb8b6cd917ef258c1        j.aesiom
2d24100        fe2cc92855170913c530b9ae29ae7484        geanga.mebeom
x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om
a19000921        manager58149901.ballyfinance.fer                77777
h2083414                yanxinliang200.80331yagaoqcomucn                126600
k2389wgi                ww.wangle.iwangleijp.ydyso.mo.cp                12hr59
Ethbdripinkek e51fe7ef24ca912bf34d522cc17f98a7          manager58149901.ballyfinance.fer
Evoroy        e282c1a8d7603393dae8905ebbfdabca          yanxinliang200.80331yagaoqcomucn
ExpinnylikE   2cf0e66232114aad38f6f60fba286918          ww.wangle.iwangleijp.ydyso.mo.cp
FENjtUAQIU    c58231d9bb139b009a2a754850d98ad6          lixu042162000iuluxu0421198ulu.rt
FN    CFG        64d7bfa1071d6c88b657cb2cb9b2fc00           
FhsK    ming     3f33cd3a9a6eaf7c593e71ae2f2e6771           
Fnuse    face    add4df170e88a333c20781293fc5417e   
Fat    D         6a25d87502e3f2db5a2a50222bb99a55   
Fnyna    Wxqg    88ef799d601d85387c36e6f6e1101269

dst:
jagn890        c57562653c783faeb8b6cd917ef258c1        j.aesiom
2d24100        fe2cc92855170913c530b9ae29ae7484        geanga.mebeom
x3h1993        014441af77a00e2dde25046dcc6ea218        gamngaan.om
Ethbdripinkek e51fe7ef24ca912bf34d522cc17f98a7          manager58149901.ballyfinance.fer
Evoroy        e282c1a8d7603393dae8905ebbfdabca          yanxinliang200.80331yagaoqcomucn
ExpinnylikE   2cf0e66232114aad38f6f60fba286918          ww.wangle.iwangleijp.ydyso.mo.cp
FENjtUAQIU    c58231d9bb139b009a2a754850d98ad6          lixu042162000iuluxu0421198ulu.rt

当然这是我对你1楼的理解,感觉和你7楼的二中的2有点出入
  1. awk --re-interval '$2~/[[:alnum:]]{32}/'
复制代码

求职 : 技术支持/维
论坛徽章:
0
10 [报告]
发表于 2016-07-26 09:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP