免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何提取标签中的数字,修改后再替换掉数字 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-25 18:54 |只看该作者 |倒序浏览
  1. <CreateTime>1390136672987</CreateTime>
复制代码
如何把一个标签中的数字1390136672987截取前十位(1390136672),经过计算(如下),得出2014-1-19再替换掉那串数字,最后格式是<CreateTime>2014-1-19</CreateTime>
对了,标签是在一行的,并且文中有多处需要替换
  1. date -d "$((1298995200 - `date '+%s'` )) sec" +%Y-%-m-%-d
复制代码
处女帖,求呵护

先谢谢大家拉^_^

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2014-01-26 09:32 |只看该作者
try:
  1. awk -F'[<>]' '{"date -d \042$(("substr($3,1,10)" - `date \047+%s\047` )) sec\042 +%Y-%m-%d" | getline s;printf "<%s>%s<%s>\n",$2,s,$4}'
复制代码

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-16 06:20:00
3 [报告]
发表于 2014-01-26 09:33 |只看该作者
  1. [root@localhost test]# cat shell
  2. mtime=`cat txt | sed 's/<CreateTime>\([0-9]\{10\}\)[0-9]*<\/CreateTime>/\1/'`
  3. mdate=$(date -d "$(($mtime-`date '+%s'`)) sec" '+%Y-%-m-%-d')
  4. sed "s/\(<CreateTime>\).*\(<\/CreateTime>\)/\1$mdate\2/" txt
  5. [root@localhost test]#
  6. [root@localhost test]# bash shell
  7. <CreateTime>2014-1-19</CreateTime>
复制代码

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-16 06:20:00
4 [报告]
发表于 2014-01-26 09:33 |只看该作者
估计执行效率不是很高。。。。因为用了三行代码两个sed完成的。。

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
5 [报告]
发表于 2014-01-26 09:42 |只看该作者
本帖最后由 jackhuntcn 于 2014-01-26 09:43 编辑
  1. $ echo '<CreateTime>1390136672987</CreateTime>' | awk -F'[<>]' '{print "<"$2">"strftime("%Y-%m-%d",substr($3,1,10))"<"$4">"}'
  2. <CreateTime>2014-01-19</CreateTime>
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2014-01-26 09:48 |只看该作者
回复 5# jackhuntcn

把一个标签中的数字1390136672987截取前十位(1390136672),经过计算(如下),得出2014-1-19再替换掉那串数字

你确定你看清题目了?   

论坛徽章:
0
7 [报告]
发表于 2014-01-26 09:52 |只看该作者
  1. $ cat test3
  2. 1dasddd
  3. <CreateTime>1390136672987</CreateTime>
  4. 3abbaf
  5. 4dad
  6. <CreateTime>1390132272987</CreateTime>
  7. 6dasdddd
  8. <CreateTime>1390612372987</CreateTime>
  9. 8asd
  10. <CreateTime>1390196672987</CreateTime>

  11. $ for a in $(cat test3);do if [[ $a =~ [\<\>] ]];then b=$(date -d "$(($(echo $a|sed 's/^.*>\(.\{10\}\).*<.*$/\1/')-$(date +'%s'))) sec" +%Y-%-m-%-d);echo $a|sed 's/\(^.*>\)\(.*\)\(<.*$\)/\1'"$b"'\3/';else echo $a;fi;done
  12. 1dasddd
  13. <CreateTime>2014-1-19</CreateTime>
  14. 3abbaf
  15. 4dad
  16. <CreateTime>2014-1-19</CreateTime>
  17. 6dasdddd
  18. <CreateTime>2014-1-25</CreateTime>
  19. 8asd
  20. <CreateTime>2014-1-20</CreateTime>
复制代码

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
8 [报告]
发表于 2014-01-26 09:59 |只看该作者
回复 6# yestreenstars

  没看清楚。。
  1. $ echo '<CreateTime>1390136672987</CreateTime>' | awk -F'[<>]' '{print "<"$2">"strftime("%Y-%-m-%-d",substr($3,1,10))"<"$4">"}'
  2. <CreateTime>2014-1-19</CreateTime>
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-01-26 11:09 |只看该作者
大侠,都怪我少说了点东西,真不好意思。{:3_196:}
我要处理的文档是一个XML。里面的标签都是<>这样的。所以这个好像不行。而且要处理的地方有多处。还望大侠再帮帮忙
给个测试例子

  1. <dc:creator>admin</dc:creator>
  2. <CreateTime>1390136672987</CreateTime>
  3. <wp:post_id>40060814513</wp:post_id>
  4. <wp:post_type>post</wp:post_type>
  5. <wp:status>publish</wp:status>
  6. <category domain="post_tag">Something</category>

  7. <dc:creator>admin</dc:creator>
  8. <CreateTime>1390052327865</CreateTime>
  9. <wp:post_id>40060794903</wp:post_id>
  10. <wp:post_type>post</wp:post_type>
  11. <wp:status>publish</wp:status>
  12. <category domain="post_tag">Something</category>

  13. <dc:creator>admin</dc:creator>
  14. <CreateTime>1389533317291</CreateTime>
  15. <wp:post_id>40060756519</wp:post_id>
  16. <wp:post_type>post</wp:post_type>
  17. <wp:status>publish</wp:status>
  18. <category domain="post_tag">Something</category>

复制代码
而且文档中还保存有文章。不排除有什么干扰的符号。
回复 2# yestreenstars


   

论坛徽章:
0
10 [报告]
发表于 2014-01-26 11:11 |只看该作者
好像不能处理多处呀,我在9楼给出个测试例子,麻烦再帮帮忙,谢谢

回复 4# nathanielwen


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP