免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: lw_987
打印 上一主题 下一主题

[文本处理] 批量修改文件日期长度,在线等 [复制链接]

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
21 [报告]
发表于 2013-12-02 14:44 |只看该作者
回复 19# wang390750


    {for(i=13-split($1,a,"[0-9]");i>0;i--)$1=$1"0"}

split 用数字为分隔符拆分 $1 , 得到的数组长度就是$1 中包含的 数字个数+1。  例如:

<dcTime>2013112823   数字的个数为 10, split 的返回值为 11

接下来再用12 - 数字个数 的值作为循环的次数, 每次循环都在原$1 后面加一个0.

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
22 [报告]
发表于 2013-12-02 14:47 |只看该作者
本帖最后由 Herowinter 于 2013-12-02 16:03 编辑

回复 14# 关阴月飞
多谢,我的思路是当数字是1-11位时,每次循环在后面加1个0,
因为要反向引用,所以用gensub
  1. awk --re-interval '{while($0~/<dcTime>([0-9]{1,11})<\/dcTime>/)$0=gensub(/<dcTime>([0-9]{1,11})<\/dcTime>/,"<dcTime>\\10</dcTime>",1);print}' i
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
23 [报告]
发表于 2013-12-02 14:51 |只看该作者
  1. awk 'BEGIN{RS="[0-9]+";OFS=ORS=""}{while(length(RT)<12&&length(RT)!=0)RT=RT"0"}{print $0,RT}' file
复制代码

论坛徽章:
0
24 [报告]
发表于 2013-12-02 14:55 |只看该作者
回复 21# 关阴月飞


    多谢。

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
25 [报告]
发表于 2013-12-02 15:35 |只看该作者
本帖最后由 li0924 于 2013-12-02 15:51 编辑
  1. awk 'BEGIN{FS=OFS="</"}{str=sprintf("%-12s",substr($1,9));gsub(/ /,'0',str);print substr($1,1,8) str,$2}' file
复制代码

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
26 [报告]
发表于 2013-12-03 21:11 |只看该作者
本帖最后由 kernel69 于 2013-12-03 21:11 编辑
  1. $ cat a
  2. <dcTime>201311282320</dcTime>
  3. <dcTime>2013112823</dcTime>
  4. <dcTime>201311282310</dcTime>
  5. <dcTime>201311282330</dcTime>
  6. <dcTime>2013112823</dcTime>
  7. <dcTime>201311282330</dcTime>
  8. $ perl -pe 's/(\d+)/$1."0" x (12-length $1)/e' a
  9. <dcTime>201311282320</dcTime>
  10. <dcTime>201311282300</dcTime>
  11. <dcTime>201311282310</dcTime>
  12. <dcTime>201311282330</dcTime>
  13. <dcTime>201311282300</dcTime>
  14. <dcTime>201311282330</dcTime>
  15. $
复制代码
回复 1# lw_987


   

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
27 [报告]
发表于 2013-12-03 21:12 |只看该作者
学习了大牛,好思路
回复 16# yestreenstars


   

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
28 [报告]
发表于 2013-12-04 11:37 |只看该作者
  1. echo 2013112823 | awk '{a=sprintf("%-12s",$0);gsub(" ","0",a);print a}'
  2. 201311282300
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP