本次数据清洗场景:

根据数据库表imgs【记录有图片基本信息,和相应图片路径】记录清洗出对应图片信息(包括:briefImg[简图]/fullImg[全图])以及每天的csv文件。

目标目录存在较多各种类型的图片 这里只需要清洗出简图和全图

分析:

本次操做基本不涉及数据比如图片或者视频等多媒体数据的解析等操做 主要是数据抽取和文件cp,故采用shell脚本的方式进行数据清洗

缺点:脚本不易调试,出错不易定位,需要一定的脚本指令基础,由于自身知识限制,目前未在性能监控等方面做相关学习 这里只记录实际操做,未作较多性能分析。

安排:

早期可以一次性把 开始数据清洗之前的数据全部清洗 分批进行处理 后期可以按照数据量和具体业务分析 以天为单位或者星期为单位增量清洗

原始数据分析:

原始目录imgs 下包含系统中各种图片信息 较混乱。图片按照日期存放,一天一个目录。观察数据 会发现 0:00左右的图片 可能会存放在下一天的目录中

以下步骤展示一天为单位的增量清洗,均在linux系统下操做

步骤一、从imgs表中导出图片信息数据生成csv文件同时作为图片清洗的依据

注意:服务器采用mysql

mysql -N -uroot -proot security_pk -e "select CONCAT(id,'|',timestamp,'|', briefImg,'|',fullImg,'|',from_unixtime(timestamp,'%Y%m%d'))from imgs where from_unixtime(timestamp,'%Y%m%d')='20180701' " > /home/imgs /csv_img_backup/input/imgs20180701.txt

查询每一天的增量数据 并且将查询结果写入备份文件imgs20180701.txt,该文件按日期备份

由于mysql的输出文件 存在首尾行分割符,每行不同字段间存在较多空格(表字段长度)这里通过sed 指令来去掉首尾行以及每行的空格

sed -i  '1d'  /home/imgs /csv_img_backup/input/imgs20180701.txt

sed -i  '$d'  /home/imgs /csv_img_backup/input/imgs20180701.txt

  sed -i 's/\s\+//g' /home/imgs /csv_img_backup/input/imgs20180701.txt

这里不对原始数据做数据内容的处理,清理完后数据的格式就比较整洁紧凑了。

一般项目上会要求转换成csv格式保存,这里同样将imgs20180701.txt文件备份一份csv文件。

awk -F"|" '{print $2","$3","$4","$5 >>"/home/imgs /csv_img_backu/output/CSV/"$6".csv"}' imgs20180701.txt

验证数据准确性

  head  /home/imgs/csv_img_backup/input/ imgs20180701.txt

tail   /home/imgs/csv_img_backup/input/ imgs20180701.txt

wc –l  /home/imgs/csv_img_backup/input/ imgs20180701.txt

和具体数据库表:imgs中数据比较

将csv 文件 scp 到备用服务器,在备用服务器指定目录执行  ***/new/CSV/20180701.csv

scp 源服务器用户@源服务器ip:文件目录  备用服务器存放文件的目录

至此步骤一算是整体完成

步骤二,一般资源所在服务器 运行着业务系统,大量的cp操做会严重影响服务器io性能,同时抽取的文件会同样占用大量磁盘空间,故考虑可以将日期20180701下的图片数据拷贝到备用服务器做相关抽取备份操做,后续需要用到数据去该服务器获取(该步骤不是必须)

通过scp指令可以完成该操作

建议指令在备用服务器执行,减少源服务器的压力  ****/old/ZIP/

scp  源服务器用户@源服务器ip:文件目录  备用服务器存放文件的目录

考虑到文件拷贝操做可能会消耗一段时间,可以将该指令设置为后台执行。

一般想到的可能是nohup,但scp过程通常不是免密的,执行过程需要用户输入源服务器用户密码,所以采用 bg和disown 方式实现指令后台执行,

这里可以了解下:

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程,要做的就是让该进程的父进程不在是当前终端会话

具体操做:

  1. 执行scp指令
  2. ctrl+z 暂停该指令,jobs 可以查看到当前后台指令
  3. bg %1 其中1—对应指令的job序号 设置scp指令后台运行,jobs 查看执行状态
  4. 方式回话超时或者终端关闭导致scp指令关闭,执行disown –h %1,修改父进程,可以ps –ef | grep scp 查看 此时父进程为 1 也就是系统运行进程。。。

等待scp 结束,可大概估算下时间   du –sh ./2018-07-01 查看目录./2018-07-01大小

df –h ./ 查看当前目录磁盘空间

步骤三:源数据中抽取简图和全图文件

    步骤一步骤二已经准备好了基本数据 后续开始抽取和打包操做, 抽取后的数据同样按照天为单位  ***/new/ZIP/20180701.tar

  1. 修改csv文件face/full path

    sed -i 's|/home/imgs/|***/new/ZIP/20180701/|g' /***/new/CSV/ 20180701.csv

   2.根据a中csv文件抽取 简图/全图

    指令类似下面操做  $num  num为 awk分割行数据后的索引,从1开始,其中0代表整行数据

    

nohup awk -F"," '{print $3}' 20180701.csv |awk -F"/" '{print "mkdir -p/***/new/ZIP/"$8"; cp -f /***/old/"$8"/"$9  " "$0}' |sh > 20180701.run  2>&1  &

  3.将抽取的目录打成tar包不压缩

    tar –cvf ***tar  ./20180701/

over....

转载于:https://www.cnblogs.com/szy94creator/p/9290483.html

基于shell 脚本处理文本数据流程相关推荐

  1. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  2. 使用shell脚本更新文本数据至mysql数据库

    1.getgamedesc.sh      功能:插入gamedesc.txt文本中的,以","分割的第1列数据gid和第6列数据desc,到线网mysql数据库中(当字段$des ...

  3. Linux论文基于shell脚本

    CSDN下载:https://download.csdn.net/download/eseszb/10503223 Linux下基于shell脚本的流量监控报警系统设计与实现 摘要:随着云计算的到来, ...

  4. linux实现学生信息管理系统,Linux下基于shell脚本实现学生信息管理系统

    LINUX Linux操作系统 Linux下基于shell脚本实现学生信息管理系统 #该管理系统是参考两位博主(时间有点远了,我忘了,请博主看到后联系我)后自行修改添加的.登录过程还有很多不完善,我就 ...

  5. 基于深度学习的文本数据特征提取方法之Word2Vec

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Dipanjan (DJ) Sarkar 编译:ronghuaiyang ...

  6. 基于深度学习的文本数据特征提取方法之Glove和FastText

    2019-12-03 20:49:51 作者:Dipanjan (DJ) Sarkar 编译:ronghuaiyang 导读 今天接着昨天的内容,给大家介绍Glove模型和FastText模型,以及得 ...

  7. 深度特征提取方法_基于深度学习的文本数据特征提取方法之Glove和FastText

    作者:Dipanjan (DJ) Sarkar 编译:ronghuaiyang 导读 今天接着昨天的内容,给大家介绍Glove模型和FastText模型,以及得到的词向量如何应用在机器学习任务里. ( ...

  8. linux mysql清除缓存_案例:通过shell脚本实现mysql数据备份与清理

    导读 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此 ...

  9. Shell脚本之文本处理三剑客——awk

    目录 一.awk是什么? 1.awk基本介绍 2.基本格式 3.工作原理 4.常见的内建变量(可直接用) 二.awk相关示例 1.打印文本内容 1.1 打印磁盘已经使用情况 1.2  打印字符串 1. ...

最新文章

  1. spark学习13(spark RDD)
  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]
  3. laravle 事务
  4. 表格学生表html,HTML的嵌入式精美学生表格代码
  5. 如何使用SAP Analytics Cloud统计C4C系统每天新建的Lead个数和预测趋势
  6. 问题 A: 深度学习
  7. louvian算法 缺点 优化_黑帽SEO、快排、白帽SEO的介绍与优缺点的对比
  8. 机器学习-支持向量机原理
  9. CSS实现导航条图片的翻转菜单
  10. 如何通过阿里云APP进行域名备案?阿里云备案流程需要多久?
  11. 一台电脑两个macOS系统,怎么装
  12. Win10 Bash搭建嵌入式Qt开发平台
  13. 冯诺依曼结构和哈弗结构
  14. python 截取一周(或者N周)的日期
  15. c语言程序设计高速公路超速处罚,高速超速违章处理流程
  16. jQuery操作Dom元素、jQuery遍历、JavaScript遍历
  17. 手机中的传感器:重力感应器、加速度传感器、陀螺仪、电子罗盘和光线距离感应器
  18. 腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点!
  19. 郑林楷计算机系姚班,郑林楷为什么被清华录取 郑林楷在清华很厉害吗
  20. 微信中直接下载app的解决方法,如何解决微信中无法直接下载app的问题

热门文章

  1. 微信收费事件背后被广泛忽略的技术细节
  2. 【腾讯bugly干货】QQ空间直播秒开优化实践
  3. SharePoint2010添加webpart找不到内容编辑器
  4. iOS禁止输入emoji表情
  5. 玩转SecureCRT 安装
  6. php页面的特点_带你认识PHP的四大特性八大优势
  7. 计算机重启是什么原因,电脑自动重启是什么原因
  8. php7 mcrypt模块_Linux下PHP安装mcrypt扩展模块笔记
  9. 函数栈帧的创建和销毁图解
  10. PHP第十次实验总结,The Clean Architecture in PHP 读书笔记(十)