免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提取文件两行之间的内容放入到一共文件里面 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-29 10:39 |只看该作者 |倒序浏览
要处理的文本内容如下:
Recno:: 0
URL:: http://digitalcollections.anu.edu.au/
CrawlDatum::
Version: 7
Status: 67 (linked)

Recno:: 1
URL:: http://dspace.anu.edu.au/
CrawlDatum::
Version: 7
Status: 35 (fetch_redir_temp)
Fetch time: Mon Aug 12 18:19:23 CEST 2013


Recno:: 2
URL:: http://ebooks.adelaide.edu.au/
Content::
Version: -1
url: http://ebooks.adelaide.edu.au/
metadata: Date=Mon, 12 Aug 2013 08:18:15 GMT nutch.crawl.score=1.0 _fst_=33 nutch.segment.name=20130813001904 Accept-Ranges=bytes Connection=close Content-Type=text/html Server=Apache/2.0.52 (Red Hat)
Metadata:

Recno:: 4
URL:: http://ebooks.adelaide.edu.au/index.html
CrawlDatum::
Version: 7
Status: 67 (linked)
Fetch time: Mon Aug 12 18:19:33 CEST 2013
Modified time: Thu Jan 01 01:00:00 CET 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)

处理需求:
希望把Recno::1到Recno::2之间的内容,放入1.txt文件里面;
    把Recno::2到Recno::3之间的内容,放入2.txt文件里面;
就是把相邻2个Recno开头的行之间的内容放入第一个Recno::后跟的数字命名的txt文件中。
以此类推,要处理的文件很大,数百万行。
我的方法很土鳖,用while然后去判断行里是否有Recno开头。。。
希望有快速的处理速度
求各位大大支招。。。

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2013-08-29 10:52 |只看该作者
awk -v RS='Recno::' '{file=$1;gsub($1,"");print >file".txt"}'  urfile

论坛徽章:
0
3 [报告]
发表于 2013-08-29 11:19 |只看该作者
回复 2# HH106


    多谢老兄~
    处理大文件 时候报错

awk: program limit exceeded: maximum number of fields size=32767
        FILENAME="dump" FNR=640 NR=640

论坛徽章:
1
天蝎座
日期:2013-08-22 15:14:44
4 [报告]
发表于 2013-08-29 11:19 |只看该作者
本帖最后由 guogang225 于 2013-08-29 11:20 编辑

回复 1# go2cxg
  1. awk -vRS="Recno::" -vFS="\n" -vOFS="\n" 'NF>1{n=int($1);$1="";print $0>n".txt"}' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-08-29 11:37 |只看该作者
回复 4# guogang225


    抛出错误,awk: cannot open "1033.txt" for output (Too many open files)
    可能是因为打开了太多文件,没有关闭。

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
6 [报告]
发表于 2013-08-29 11:48 |只看该作者
sed干这事是不是专业些。

论坛徽章:
1
天蝎座
日期:2013-08-22 15:14:44
7 [报告]
发表于 2013-08-29 11:49 |只看该作者
回复 5# go2cxg

Try this one
  1. awk -vRS="Recno::" -vFS="\n" -vOFS="\n" 'NF>1{n=int($1);$1="";print $0>n".txt";close(n".txt")}' urfile
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
8 [报告]
发表于 2013-08-29 11:56 |只看该作者
  1. awk '/Recno/{file=$2;next}{if(file)print $0>file".txt"}' file
复制代码

论坛徽章:
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
9 [报告]
发表于 2013-08-29 12:00 |只看该作者
回复 5# go2cxg

modify from guogang225 with close function

and add other/debug information with yellow background color

# awk 'BEGIN{RS="Recno:: ";FS=OFS="\n"}NF>1{f=int($1)".txt";print RS$0 > f;close(f);print "output file: "f;c++}END{print "  Total files: "c}' Recno.log
output file: 0.txt
output file: 1.txt
output file: 2.txt
output file: 4.txt
  Total files: 4

   

论坛徽章:
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
10 [报告]
发表于 2013-08-29 12:07 |只看该作者
cao627 发表于 2013-08-29 11:56
  1. Recno:: 0
  2. URL:: http://digitalcollections.anu.edu.au/
  3. CrawlDatum::
  4. Version: 7
  5. Status: 67 (linked)
复制代码
Recno:: 0 这段  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP