免费注册 查看新帖 |

Chinaunix

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

【求助】提取文本数据 [复制链接]

论坛徽章:
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
1 [报告]
发表于 2015-12-12 23:48 |显示全部楼层
回复 1# Tina0910

$ perl get_key.pl
    Usage  : get_key.pl keyword file
    Example: get_key.pl ID FILE

$ perl get_key.pl ID FILE
ID REINVENTING GOVERNMENT MOVEMENT; MANAGEMENT

ID PUBLIC ENTREPRENEURSHIP; GOVERNMENT; MANAGEMENT; DEMOCRACY; MOVEMENT
ID GOVERNMENT; STATE; MANAGEMENT

$ cat get_key.pl
use strict;
use warnings;

sub message{
  print<<EOF;
    Usage  : $0 keyword file
    Example: $0 ID FILE
EOF
  exit(1);
}

message() if(@ARGV < 2);
my $sKey = shift;
my $sOut = "\n";
my $sSeg = 0;
my $sMatch = 0;
while(<>){
  if(m/^\s*$/){
    print "$sOut" if $sSeg;
    $sOut = "\n";
    $sSeg = 0;
    $sMatch = 0;
  }
  else{
    $sSeg = 1;
  }
  $sMatch=0 if(/^\S/);
  if(m/^$sKey /){
    $sOut = $_;
    $sMatch = 1;
    next;
  }
  if($sMatch){
    $sOut .= $_;
  }
}
print $sOut if($sOut ne "");

   

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 您这个代码逻辑非常给力!

查看全部评分

论坛徽章:
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
2 [报告]
发表于 2015-12-15 08:16 |显示全部楼层
回复 8# Tina0910

>> ...如果源文件是abc.txt, ... 想输入ID的内容到result.txt.

$ perl get_key.pl
    Usage  : get_key.pl keyword file
    Example: get_key.pl ID FILE

$ perl get_key.pl ID abc.txt > result.txt

$ cat result.txt
ID REINVENTING GOVERNMENT MOVEMENT; MANAGEMENT

ID PUBLIC ENTREPRENEURSHIP; GOVERNMENT; MANAGEMENT; DEMOCRACY; MOVEMENT
ID GOVERNMENT; STATE; MANAGEMENT

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP