免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2014-01-26 11:14 |只看该作者
大侠,感谢你的帮助,怪我没说明白。不能用<>来进行判断,因为文本好多标签,测试例子在9L,麻烦再帮忙看看

回复 7# runintostar


   

论坛徽章:
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
12 [报告]
发表于 2014-01-26 11:19 |只看该作者
回复 9# sincerefly

try:
  1. awk -F'[<>]' '/<CreateTime>/{$0=sprintf("<%s>%s<%s>",$2,strftime("%F",substr($3,1,10)),$4)}1'
复制代码

论坛徽章:
0
13 [报告]
发表于 2014-01-26 11:28 |只看该作者
本帖最后由 runintostar 于 2014-01-26 11:31 编辑

回复 11# sincerefly

如果是这样那[[ $a =~ [<>] ]]改成[[ $a =~ "<CreateTime>" ]]应该就可以了
哦,还要把for a in 改成while read a的形式,你还是用昨夜星辰兄后来提供的吧,那样比较方便

论坛徽章:
0
14 [报告]
发表于 2014-01-26 11:29 |只看该作者
太感谢啦,谢谢

回复 12# yestreenstars


   

论坛徽章:
0
15 [报告]
发表于 2014-01-26 11:37 |只看该作者
恩恩,是的,可以使用,谢谢

回复 13# runintostar


   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
16 [报告]
发表于 2014-01-26 12:48 |只看该作者
try:
  1. sed '/<CreateTime>/{h;s/.*<CreateTime>\(.*\)<.*/\1/;s/...$//;s/.*/date -d "$((& - `date '+%s'` )) sec" +%Y-%-m-%-d/e;G;s/\(.*\)\n\(.*<CreateTime>\).*\(<\/CreateTime>.*\)/\2\1\3/; }' urfile
复制代码

论坛徽章:
0
17 [报告]
发表于 2014-01-26 16:12 |只看该作者
谢谢啦,是正确的~~

回复 16# blackold


   

论坛徽章:
0
18 [报告]
发表于 2014-01-26 16:49 |只看该作者
回复 12# yestreenstars


    大神,你给的代码很简洁好用,有一个相似的问题,我根据你给的代码改了改,不过报错了,还请指教

为了实现从
  1. <Tag>杂<Tag>
复制代码
  1. <category domain="post_tag" nicename="%e6%9d%82"><![CDATA[杂]]></category>
复制代码
的转化

那个nicename的值是“杂”转化的urlencod,转化方法是
  1. echo -n "杂"|od -An -tx1 -w30|tr ' ' %
复制代码
应该是我嵌套出了问题。求大神举例。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-16 06:20:00
19 [报告]
发表于 2014-01-27 09:59 |只看该作者
@yestreenstars的代码稍微改一下就好了吧。那个awk写的挺牛逼的。
  1. [root@localhost test]# cat txt | awk -F'[<>]' '{if($0~/CreateTime/){"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}else{print $0}}'
  2. <dc:creator>admin</dc:creator>
  3. <CreateTime>2014-01-19</CreateTime>
  4. <wp:post_id>40060814513</wp:post_id>
  5. <wp:post_type>post</wp:post_type>
  6. <wp:status>publish</wp:status>
  7. <category domain="post_tag">Something</category>

  8. <dc:creator>admin</dc:creator>
  9. <CreateTime>2014-01-18</CreateTime>
  10. <wp:post_id>40060794903</wp:post_id>
  11. <wp:post_type>post</wp:post_type>
  12. <wp:status>publish</wp:status>
  13. <category domain="post_tag">Something</category>

  14. <dc:creator>admin</dc:creator>
  15. <CreateTime>2014-01-12</CreateTime>
  16. <wp:post_id>40060756519</wp:post_id>
  17. <wp:post_type>post</wp:post_type>
  18. <wp:status>publish</wp:status>
  19. <category domain="post_tag">Something</category>
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
20 [报告]
发表于 2014-01-27 10:17 |只看该作者
本帖最后由 jason680 于 2014-01-27 10:20 编辑

回复 1# sincerefly

>>如何把一个标签中的数字1390136672987截取前十位(1390136672),经过计算(如下),得出2014-1-19再替换掉那串数字,最后格式是<CreateTime>2014-1-19</CreateTime>对了,标签是在一行的,并且文中有多处需要替换

$ LANG=C perl -lape '{s|(<CreateTime>)(\d{10})\d+(</CreateTime>)|sprintf("%s%s%s",$1,`date -d \@$2 +%F`,$3)|ge;s/\n//}' FILE
<dc:creator>admin</dc:creator>
<CreateTime>2014-01-19</CreateTime>
<wp:post_id>40060814513</wp:post_id>
<wp:post_type>post</wp:post_type>
<wp:status>publish</wp:status>
<category domain="post_tag">Something</category>

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP