对于处理百万级别以上的数据,提供三个方法对比:
方法一大约耗时25分钟(for循环)
方法二大约耗时7分钟(for循环)
方法三大约耗时10秒(awk工具)

现在有个文本,里面数据是日-月-年,如下:

任务就是将上面的日期转换成YYMMDD格式。
例如第一个的17-MAR-20,则是转换成20200317
那么需求就很简单了,将中间的英文提取转换成数字月份,然后重新排列组合就行了。

转换后的结果:

方法一:

代码如下:

for tmp in `cat file |awk -F '[,]' '{print $3}' `;
domonth=`echo $tmp|awk -F '[-]' '{print $2}'`#echo $monthcase $month inJAN|Jan|jan)echo $tmp|awk -F '[-]' '{print 20$(3)01$1}'>>file_new;;FEB|Feb|feb)echo $tmp|awk -F '[-]' '{print 20$(3)02$1}'>>file_new;;MAR|Mar|may)echo $tmp|awk -F '[-]' '{print 20$(3)03$1}'>>file_new;;APR|Apr|apr)echo $tmp|awk -F '[-]' '{print 20$(3)04$1}'>>file_new;;MAY|May|may)echo $tmp|awk -F '[-]' '{print 20$(3)05$1}'>>file_new;;JUN|Jun|jun)echo $tmp|awk -F '[-]' '{print 20$(3)06$1}'>>file_new;;JUL|Jul|jul)echo $tmp|awk -F '[-]' '{print 20$(3)07$1}'>>file_new;;AUG|Aug|aug)echo $tmp|awk -F '[-]' '{print 20$(3)08$1}'>>file_new;;SEP|Sep|sep)echo $tmp|awk -F '[-]' '{print 20$(3)09$1}'>>file_new;;OCT|Oct|oct)echo $tmp|awk -F '[-]' '{print 20$(3)10$1}'>>file_new;;NOV|Nov|nov)echo $tmp|awk -F '[-]' '{print 20$(3)11$1}'>>file_new;;DEC|Dec|dec)echo $tmp|awk -F '[-]' '{print 20$(3)12$1}'>>file_new;;esac
done

有一个问题就是,上面的这样转换效率不快,1M的文本转换要接近10多甚至20分钟!
当然如果是小文本就无所谓了,我接触的数据基本都是百万级别的,就很尴尬。
这个效率问题还没想好要怎么去解决,以后如有办法解决效率问题再更新、。
······############################################·····

方法二

更新一下方法,下面这个方法处理百万级别的数据要7分钟左右:

for tmp in `cat file |awk -F '[,]' '{print $3}' `;
dodate "+%Y%m%d" -d $tmp >> test.txt
done

这方法对于超过M级别的数据也是不行的,不符合大数据处理思想。

方法三

用awk处理就很快,大概10多秒就可以了。
awk是个强大的工具~
方法如下:

#直接使用gsub函数替换掉MAR成03,这种方法速度极快(1、2秒就能处理完毕),其它月份也是同样处理
awk '{gsub(/JAN/,"01")}1' u_file_nane > $name.tmp0
awk '{gsub(/FEB/,"02")}1' $name.tmp0 > $name.tmp1
awk '{gsub(/MAR/,"03")}1' $name.tmp1 > $name.tmp0
awk '{gsub(/APR/,"04")}1' $name.tmp0 > $name.tmp1
awk '{gsub(/MAY/,"05")}1' $name.tmp1 > $name.tmp0
awk '{gsub(/JUN/,"06")}1' $name.tmp0 > $name.tmp1
awk '{gsub(/JUL/,"07")}1' $name.tmp1 > $name.tmp0
awk '{gsub(/AUG/,"08")}1' $name.tmp0 > $name.tmp1
awk '{gsub(/SEP/,"09")}1' $name.tmp1 > $name.tmp0
awk '{gsub(/OCT/,"10")}1' $name.tmp0 > $name.tmp1
awk '{gsub(/NOV/,"11")}1' $name.tmp1 > $name.tmp0
awk '{gsub(/DEC/,"12")}1' $name.tmp0 > $name.tmp1
#把十二个月份的都替换完成,那么数据就由17-MAR-20转换成17-03-20
#再对17-03-20排列组合就OK了
cat $name.tmp1|awk -F ‘[-]’ '{print 20$3$2$1}' > date.txt
#date.txt的文本格式就是YYMMDD的了,即 17-MAR-20 转换成了 20200317

shell 月份英数格式转换,月份英文转换成数字相关推荐

  1. java 英文日期转数字_DatePickerDialog的月份为英文转成数字

    在项目中,发现使用日期选择器的时候,不同手机系统日期选择框显示的日期不同,有的是中文的,有的是英文!之前以为是系统语言的问题,后面发现其实不是,是Android的日期选择框的bug. 一.现附上效果图 ...

  2. java 数字翻译成英文_java 英文翻译成数字

    展开全部 import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java ...

  3. teradata数据库中增加月份、取别名、数据类型(时间戳)转换、替换中使用正则表达式、去除空格以及字段格式调整汇总

    1.对时间月份的增加: 获取月份的函数为:extract(month from date) 增加月份为:add_months(date,2)显示两个月之后时间 2.取别名: 除了常用的直接在字段后用a ...

  4. Excel函数 - 提取月份,转换月份格式

    将B列的日期格式转换为中文格式的月份. 出生日期 月份1 月份2 35927 =TEXT(A2,"[DBnum1]m月") =TEXT(A2,"m月") B2单 ...

  5. 阿拉伯数转中文与英文[找到规律,抽象问题,转换成代码]

    阿拉伯数转中文与英文 前言 一.阿拉伯数字转换 1.阿拉伯数字转中文 a.案例 b.解决方案 2.阿拉伯数转英文 a.案例 b.解决方案 总结 参考文献 前言 如果思考算法的解法方案是一种模拟,那么这 ...

  6. 题8.18:编一程序,输入月份号,输出该月的英文月名。例如,输人3,则输出“March“ ,要 求用指针数组处理。

    题目 本题是谭浩强<C程序设计课后习题>题8.18. 题目: 编一程序,输入月份号,输出该月的英文月名.例如,输人3,则输出"March" ,要 求用指针数组处理. 以 ...

  7. (C语言)编一程序,,输入月份号,输出该月的英文月名,例如,输入3,则输出March,要求用指针数组处理

    编一程序,输入月份号,输出该月的英文月名,例如,输入"3",则输出"March",要求用指针数组处理 #define _CRT_SECURE_NO_WARNIN ...

  8. 苹果挖走英特尔5G项目一重要工程师 领英资料显示2月份就已入职

    [TechWeb]4月29日消息,据国外媒体报道,在同高通和解之前,苹果在5G芯片方面陷入了前所未有的困境,而在同高通和解并达成多年的芯片供应与专利授权协议之后,外界对苹果5G芯片的担忧也就暂时告一段 ...

  9. unity 只输入中英数_UITextField只限中文、英文、数字输入和限制字符个数的实现方法...

    写在前面 一般情况下一个字母.符号.数字相当于一个字符,一个汉字相当于两个字符,一个emoji表情相当于两个或更多字符.本文要实现的是在UITextField只允许输入一定字符数的中文.英文和数字,不 ...

最新文章

  1. 面试题mysql环境搭建_Linux运维必会的100道MySql面试题之(四)
  2. [数字信号处理]IIR滤波器的间接设计(C代码)(转)
  3. PHP安装swoole扩展
  4. rails.vim环境安装(ubuntu)
  5. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  6. (转) 设置sqlplus中的退格键
  7. 轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur
  8. 表格合并行_合并行table表格
  9. Python从菜鸟到高手(1):初识Python
  10. [转]google protobuf安装与使用
  11. C++调用caffe分类模型-Opencv3.4.3
  12. pandas.Series.values
  13. 使用APUE源码找不到apue.h
  14. 8cm等于多少像素_像素和厘米的换算
  15. Android平台车牌识别开发手册
  16. Win10系统C++调用OpenCV实现网络摄像头录像和抓拍图片
  17. 2020第五届上海第二工业大学新生程序设计竞赛(Java题解)
  18. 线性回归算法在 java 中是如何实现的?
  19. 学习ARM开发(2)
  20. 手把手教你用delphi 10.2.3 在windows上编译Centos 7下的命令行程序,适合中小学生

热门文章

  1. 微信小程序、多类型资源大全,DNF,LOL等
  2. 众多医院cc0高清摄影图片素材一键即可获取
  3. Ubuntu20.04 安装HPC_SDK加速库
  4. flex操作XML,强力总结帖
  5. 基于SSH的网上室内家具销售系统
  6. oracle触发器的自治事务
  7. 《乔布斯传》英文原著重点词汇笔记(八)【 chapter six 】
  8. c++ vector<pair<int,int>>vec的插入元素的方法
  9. 哈尔滨工程大学 自动控制原理 真题
  10. 知识图注意力网络 KGAT