免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1007 | 回复: 8

[文本处理] 文本中指定字段加密处理为md5值 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
发表于 2020-01-10 20:31 |显示全部楼层
文本内容为:

1@@@13660888666@@@2019-09-08 23:29:00
2@@@13660888777@@@2019-09-08 23:29:00
3@@@13660888888@@@2019-09-08 23:29:00

列分割符为@@@需要把文件中第二个字段中手机号用md5加密,加密后md5为大写字母
效果为
1@@@47B473CF198BA182B20CF3A02FEFA87C@@@2019-09-08 23:29:00
2@@@A2BA33550D924FD0714370D0AB255B78@@@2019-09-08 23:29:00
3@@@6FEEE6C1F7740F2758278514ED261338@@@2019-09-08 23:29:00

文件很大有几十亿,shell怎么处理能效率高些呢。



论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
发表于 2020-01-11 12:11 |显示全部楼层
我写了个,可处理效率太低了一个小时也就100w,哪位大神指点一下
#!/bin/bash

while read i
do
k1=`echo "$i"|awk -F "@@@" '{print $2}'`
k2=`echo -n "$k1"|md5sum |cut -d" " -f1|tr a-z A-Z`
echo $i |sed "s/$k1/$k2/" >> $1.csv
done < $1

论坛徽章:
7
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:06
发表于 2020-01-11 15:03 |显示全部楼层
本帖最后由 cfwyy 于 2020-01-11 16:31 编辑

awk 倒是一条就可以输出结果,不需要sed,可能会快一丢丢。
  1. awk 'BEGIN{FS=OFS="@@@"}{cmd=sprintf("echo %s|md5sum|cut -d\" \" -f1|tr a-z A-Z",$2);cmd|getline $2;close(cmd);print $0}' file
复制代码


不过话说,几十亿条数据,全国人民的手机号码都被你收录了吧,仅用一个文本文件 是不是有点随便了。几十亿条数据完全只让shell处理,是不是有点难为shell了
大数据处理是不是至少该用上 分块读取,多线程,多进程之类的啦,再不行上 分布式,Hadoop?  这些咱也不懂,咱也不敢多说,逃~~

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2020-01-11 15:26 |显示全部楼层
如果只是对手机号做md5有啥用呢?反查也没多少。
形式主义!

论坛徽章:
0
发表于 2020-01-13 08:49 |显示全部楼层
效率是不是很快我没测试,毕竟没有你的那么大文档,修改原文件的话跟sed一样的加个-i。
perl -MDigest::MD5=md5_hex -pe's#@@@\K[^@]+#uc md5_hex$&#e' file

论坛徽章:
22
申猴
日期: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:46
发表于 2020-01-13 09:54 |显示全部楼层
本帖最后由 chengchow 于 2020-01-13 09:59 编辑

几十亿的数据用shell处理是很慢的,看你忍耐程度
偶尔处理一次的话用python,shell都行,经常处理,如楼上所说搭建个大数据平台比较合适


spark+hadoop+hive

论坛徽章:
0
发表于 2020-01-13 17:15 |显示全部楼层
1 这个脚本只有用powershell最好。
1.1 多进程的肯定不行。
1.2 多线程的py用不了多核。
1.3 对于powershell,最好有n个cpu,核心越多越好。

2最好是win机子,linux也行,不过【.net core 3.1】win性能比linux上强不少。

3参考资料:
ps第21课:不用多线程,你对不起powershell
http://bbs.chinaunix.net/thread-4314689-1-1.html

4解题方案:
4.1 线程1,流式读取,插入到队列1,
4.2 n个线程干活,从队列1读取,计算,插入到队列2,
4.3 线程2,读取队列2,到数组3,读满后,存盘。

5具体代码:略。多线程编程,代码写起来麻烦。

可以参考下我下面这脚本,注意:用线程安全型变量哦。

评分

参与人数 1可用积分 +10 收起 理由
飘絮絮絮丶 + 10 赞一个!

查看全部评分

论坛徽章:
0
发表于 2020-01-15 16:47 |显示全部楼层
脚本例子的网址已经被吞掉,没有例子了,抱歉。

论坛徽章:
8
15-16赛季CBA联赛之同曦
日期:2016-06-11 19:22:41程序设计版块每日发帖之星
日期:2016-07-04 06:20:00程序设计版块每日发帖之星
日期:2016-07-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-12 06:20:00每日论坛发贴之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00每日论坛发贴之星
日期:2016-08-09 06:20:0015-16赛季CBA联赛之同曦
日期:2020-01-28 12:42:47
发表于 2020-01-27 19:18 |显示全部楼层
root@lp:~/jw/python/data# cat phone_md5.txt
1@@@13660888666@@@2019-09-08 23:29:00
2@@@13660888777@@@2019-09-08 23:29:00
3@@@13660888888@@@2019-09-08 23:29:00
root@lp:~/jw/python/data# python md5_phone.py
root@lp:~/jw/python/data# cat md5_phone.py
import pandas as pd
import hashlib


def md5(x):
     a = hashlib.md5()
     a.update(str(x).encode())
     return a.hexdigest().upper()


a = pd.read_csv('phone_md5.txt',sep='@@@',header=None,engine='python',names=['id','phone','time'])
a['phone'] = a.phone.apply(md5)
a.to_csv('md5.csv',index=None,header=None)
root@lp:~/jw/python/data#
root@lp:~/jw/python/data# cat md5.csv
1,47B473CF198BA182B20CF3A02FEFA87C,2019-09-08 23:29:00
2,A2BA33550D924FD0714370D0AB255B78,2019-09-08 23:29:00
3,6FEEE6C1F7740F2758278514ED261338,2019-09-08 23:29:00
2020-01-27 19-17-17 的屏幕截图.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时7.5折

【架构革新 自主可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP