免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何把文件分割成小文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-19 00:43 |只看该作者 |倒序浏览
我现在有一个HTML文件,里面有很多TABLE,比如
  1. ......
  2. <TABLE ...>
  3. ......
  4. </TABLE>
  5. ......
  6. ......
  7. <TABLE ...>
  8. ......
  9. </TABLE>
  10. ......
  11. <TABLE ...>
  12. ......
  13. </TABLE>
  14. ......
复制代码
我现在已经用SED把所有非TABLE的标记和修饰标记去掉了

  1. <TABLE>
  2. ......
  3. </TABLE>
  4. <TABLE>
  5. ......
  6. </TABLE>
  7. <TABLE>
  8. ......
  9. </TABLE>
复制代码
但希望能够按每个TABLE分割成一个文件,TABLE的数量没有固定,请问有没有好的方法

论坛徽章:
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
2 [报告]
发表于 2013-03-19 05:48 |只看该作者
回复 1# prolee


    try:
  1. awk '/<TABLE/{i++}/<TABLE[^>]*>/,/<\/TABLE>/{print > i}' urfile
复制代码

论坛徽章:
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
3 [报告]
发表于 2013-03-19 09:18 |只看该作者
@blackold
直接这样不就好了吗?
  1. awk '/<TABLE>/{a++}{print > a}'
复制代码

论坛徽章:
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
4 [报告]
发表于 2013-03-19 09:20 |只看该作者
回复 3# yestreenstars


    这样会把一些不应该提取的行也提取了吧。

论坛徽章:
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
5 [报告]
发表于 2013-03-19 09:27 |只看该作者
@blackold
怎么会呢,他不是已经说了吗?
我现在已经用SED把所有非TABLE的标记和修饰标记去掉了

论坛徽章:
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
6 [报告]
发表于 2013-03-19 09:34 |只看该作者
本帖最后由 blackold 于 2013-03-19 09:35 编辑

回复 5# yestreenstars


Let's see see
  1. $ cat urfile
  2.     ......
  3.     <TABLE ...>
  4.     ......
  5.     </TABLE>
  6. I'am here.
  7. Why


  8. $ awk '/<TABLE[^>]*>/{i++}/<TABLE[^>]*>/,/<\/TABLE>/' urfile
  9.     <TABLE ...>
  10.     ......
  11.     </TABLE>

  12. $ awk '/<TABLE[^>]*>/{i++}1' urfile
  13.     ......
  14.     <TABLE ...>
  15.     ......
  16.     </TABLE>
  17. I'am here.
  18. Why

  19. $ awk '/<TABLE[^>]*>/{i++}i' urfile
  20.     <TABLE ...>
  21.     ......
  22.     </TABLE>
  23. I'am here.
  24. Why

复制代码

论坛徽章:
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
7 [报告]
发表于 2013-03-19 09:40 |只看该作者
@blackold
我现在已经用SED把所有非TABLE的标记和修饰标记去掉了

这句话的意思不是表明他用sed处理后的文件都是以<TABLE>开始,</TABLE>结束的段落了吗?

论坛徽章:
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
8 [报告]
发表于 2013-03-19 09:45 |只看该作者
回复 7# yestreenstars


    如果是这样,就没有问题。

论坛徽章:
0
9 [报告]
发表于 2013-03-19 22:31 |只看该作者
我刚学SED和SEHLL,目前还没有学习到awk,虽然知道和SED基本类似,那我现在就可以用管道把文件通过SED处理交给
  1. awk '/<TABLE>/{a++}{print > a}'
复制代码
。非常谢谢两位!今晚突击一下awk。

论坛徽章:
0
10 [报告]
发表于 2013-03-19 22:35 |只看该作者
另外问问,用sed可以吗?我知道它没有循环和分支这些东西,但有没有啥选项可以类似这个
  1. {a++}{print > a}
复制代码
用shell传过来的变量自增成多个文件名?把sed我能看懂的资料都找了一遍,也没找到方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP