免费注册 查看新帖 |

Chinaunix

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

[文本处理] 小弟扛不住,这个shell太有挑战性,请高手帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-07-26 13:32 |只看该作者 |倒序浏览

Channel:3D试验
Date:20170726
0000-0140|劲爆体育
0140-0320|全天节目结束
0320-0500|全天节目结束
0500-0640|全天节目结束
0640-0820|全天节目结束
0820-1000|全天节目结束
1000-1030|全天节目结束
1030-1041|糖果总动员(19)
1041-1130|城市之光Ⅲ(下)
1130-1200|3D乐园
1200-2400|万家灯火
Channel:北京卫视
Date:20170726
0000-0012|我的前半生剧宣
0012-0016|广宣时段
0016-0118|光阴
0118-0121|广宣时段
0121-0221|我的前半生剧宣
0221-0224|广宣时段
0224-0310|幸福请你等等我(11)
0310-0356|幸福请你等等我(12)
0356-0442|幸福请你等等我(13)
0442-0542|养生堂
0542-0601|法治进行时
0601-0620|法治进行时
0620-0657|养生堂精编版
0657-0700|广宣时段
0700-0840|北京您早
0840-0900|北京您早
0900-0905|广宣时段
0905-0930|精品栏目荟萃
0930-1015|甄环传(6)
1015-1020|广宣时段
1020-2400|甄环传(7)
Channel:北京卫视HD
Date:20170726
0000-0012|我的前半生剧宣
0012-0016|广宣时段
0016-0118|光阴
0118-0121|广宣时段
0121-0221|我的前半生剧宣
0221-0224|广宣时段
0224-0310|幸福请你等等我(11)
0310-0356|幸福请你等等我(12)
0356-0442|幸福请你等等我(13)
0442-0542|养生堂
0542-2400|法治进行时
Channel:卡酷卡通
Date:20170726
0000-0005|猫和老鼠之飞向火星
0005-0027|西游记(2
0027-0049|西游记(29)
0049-0119|西游记(30)
0119-0141|西游记(31)
0141-0203|西游记(32)
0203-0230|百变马丁(41)
0230-0252|百变马丁(42)
0252-0314|百变马丁(43)
0314-0341|百变马丁(44)
0341-0403|猪猪侠之五灵守卫者(19)
0403-0425|猪猪侠之五灵守卫者(20)
0425-0439|大耳朵图图Ⅳ(7)
0439-0454|大耳朵图图Ⅳ(
0454-0505|大耳朵图图Ⅳ(9)
0505-0516|大耳朵图图Ⅳ(10)
0516-2400|大耳朵图图Ⅳ(11)
Channel:CCTV-1
Date:20170726
0000-0118|挑战不可能(62)
0118-0124|生活提示
0124-0156|晚间新闻
0156-0241|动物世界
0241-2400|精彩1刻:湛江人龙舞

....
....


小弟有一个文本文件,内容大致如上,现在想将该文本文件中每一个带卫视的channel ,该channel包含的节目单内容抽取,重定向到新文件,比如抽取北京卫视的channel,该文件被重命名为北京卫视.txt,该文件的内容包含如下,时间段从000开始,   2400结束
Channel:北京卫视
Date:20170726
0000-0012|我的前半生剧宣
0012-0016|广宣时段
0016-0118|光阴
0118-0121|广宣时段
0121-0221|我的前半生剧宣
0221-0224|广宣时段
0224-0310|幸福请你等等我(11)
0310-0356|幸福请你等等我(12)
0356-0442|幸福请你等等我(13)
0442-0542|养生堂
0542-2400|法治进行时


不抽取北京卫视HD、只抽取带卫视的



论坛徽章:
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
2 [报告]
发表于 2017-07-26 14:35 |只看该作者
你那标红的结果的明明是 北京卫视HD 的? 又说不抽取北京卫视HD、只抽取带卫视的, 那么, 你到底闹哪样?..

论坛徽章:
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
3 [报告]
发表于 2017-07-26 14:36 |只看该作者
awk -vRS='Channel:' '$1~/卫视$/{print RT$0 >$1".txt"}'  urfile

论坛徽章:
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
4 [报告]
发表于 2017-07-26 14:41 |只看该作者
猜一下:

  1. awk -F: '$2~/卫视$/{f=$2;p=1}p{print > f".txt"}/2400/{p=0}' textfile
复制代码

论坛徽章:
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
5 [报告]
发表于 2017-07-26 14:56 |只看该作者
回复 1# byrand1984

Do you like it

$ awk -F: -vk="北京卫视" '/Channel/{f=$2==k?1:0}f{print > k".txt"}' FILE

$ cat 北京卫视.txt
Channel:北京卫视
Date:20170726
0000-0012|我的前半生剧宣
0012-0016|广宣时段
0016-0118|光阴
...
1020-2400|甄环传(7)

论坛徽章:
0
6 [报告]
发表于 2017-07-26 15:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2017-07-26 17:37 |只看该作者
回复 2# reyleon

因为这个文本文件有很多频道,比如北京卫视、北京卫视HD、3D试验、女性时尚、游戏风云、黑龙江卫视 等等。。而目前只想抽取频道名称以卫视结束的,
北京卫视HD是不需要的,即使它包含了卫视两个字,3D试验、女性时尚、游戏风云这些频道也是不需要的
换句话说只要带HD的都不需要,即使有包含卫视两个字


论坛徽章:
0
8 [报告]
发表于 2017-07-26 17:44 |只看该作者
小弟刚上传了一个文本文件的内容,烦请楼上的众高手再帮忙小弟分析下。

0203.rar

40.88 KB, 下载次数: 34

这是文本文件的内容

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
9 [报告]
发表于 2017-07-27 10:58 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. use Encode qw(encode);

  6. local $/ = "\nChannel:";
  7. while(<>){
  8.         chomp;
  9.         my ($k, $v) = split(/\n/, $_, 2);
  10.         next unless($k =~ /卫视\z/);
  11.         open(my $FHw, '>', sprintf("%s.txt", encode('gb2312', $k)));
  12.         print $FHw encode('gb2312', join("\n", "Channel:$k", $v, ''));
  13.         close($FHw);
  14. }
复制代码

perl abc.pl urFile.txt

论坛徽章:
8
CU十四周年纪念徽章
日期:2017-08-28 17:16:1915-16赛季CBA联赛之北控
日期:2018-03-29 11:39:0615-16赛季CBA联赛之上海
日期:2018-05-21 10:46:10技术图书徽章
日期:2018-09-03 13:54:18技术图书徽章
日期:2018-09-03 13:54:2815-16赛季CBA联赛之四川
日期:2020-10-15 09:21:4720周年集字徽章-20	
日期:2020-10-28 13:53:0220周年集字徽章-庆
日期:2020-10-28 14:09:12
10 [报告]
发表于 2017-07-27 11:13 |只看该作者
本帖最后由 龙牙地主天 于 2017-07-27 11:15 编辑

awk 'BEGIN{RS="Channel:" ; FS="\n" ; printf "Channel:"}$1~/卫视$/{print $0}' urfile
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP