免费注册 查看新帖 |

Chinaunix

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

求助perl脚本,取某一段 [复制链接]

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
11 [报告]
发表于 2014-04-01 15:19 |只看该作者
回复 9# pitonas


    跪求大神show show完整的程序。。。我看完您老那个帖,一直没安装成ImageMagick

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
12 [报告]
发表于 2014-04-01 15:23 |只看该作者
那 linux distribution?

回复 11# huang6894


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
13 [报告]
发表于 2014-04-01 15:26 |只看该作者
{:2_172:} 赞一个!
好厉害的小伙伴们, 这个必须赞一个



回复 10# huang6894


   

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
14 [报告]
发表于 2014-04-01 15:27 |只看该作者
回复 12# pitonas


    windows

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
15 [报告]
发表于 2014-04-01 15:27 |只看该作者
回复 13# pitonas


    哥。。。这是您上次教我的程序。。。。

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
16 [报告]
发表于 2014-04-01 15:32 |只看该作者
{:2_172:} How to Take a Screenshot in Microsoft Windows
http://www.wikihow.com/Take-a-Screenshot-in-Microsoft-Windows

回复 15# huang6894


   

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
17 [报告]
发表于 2014-04-01 15:34 |只看该作者
回复 16# pitonas


    赞~

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
18 [报告]
发表于 2014-04-01 17:53 |只看该作者
本帖最后由 stanley_tam 于 2014-04-02 09:34 编辑

这回详细多了,下面是脚本代码,假设文件24.txt和你的序列文件在一个folder下面。
建议跑之前先进行备份,这个会改变原有的文件。。。
  1. #!perl
  2. use Modern::Perl;
  3. use autodie;
  4. use Tie::File;

  5. # file store data to be extracted
  6. my $data_reference = '24.txt';
  7. my $fh;open $fh, '<', $data_reference;

  8. while (defined(my $line = readline $fh)) {
  9.     # remove trailing newline
  10.     chomp $line;
  11.     # remove heading and trailing spaces
  12.     $line =~ s{^\s+ | \s+$}{}mgx;

  13.     # split the line by spaces
  14.     my ($file_name, $start_pos, $end_pos) = split /\s+/, $line;
  15.     my @seq_lines = ();

  16.     # map file to array
  17.     tie @seq_lines, 'Tie::File', $file_name or
  18.         die "Fail to tie file $file_name: !\n";

  19.     for my $seq_line (@seq_lines){
  20.         # skip line begin with >, no clue what it is about ...
  21.         next if $seq_line =~ m{^>}m;

  22.         # skip blank line
  23.         next if $seq_line =~ m{^ \s* $}mx;

  24.         # here comes the long sequence line
  25.         my @pieces = split //, $seq_line;

  26.         # get the pieces we want, convet position to index
  27.         # this is in place change
  28.         $seq_line = join '', @pieces[$start_pos-1 .. $end_pos-1];
  29.     }

  30.     # commit changes
  31.     untie @seq_lines;
  32. }

  33. close $fh;

  34. say "Done ! Press <ENTER> to exit.";
  35. <STDIN>;

  36. __END__
复制代码
回复 6# yang7473453


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
19 [报告]
发表于 2014-04-02 01:27 |只看该作者
try:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my $list   = '/tmp/old/abc.txt';    # 表格
  5. my $dir    = '/tmp/old';            # 有很多这样的文件
  6. my $newdir = '/tmp/new';            # create a new dir
  7. open my $L, '<', $list or die "$list\t$!";
  8. my %H;

  9. while (<$L>) {
  10.     my ( $name, $pos, $end ) = split;
  11.     $H{$name}{pos} = $pos;
  12.     $H{$name}{len} = $end - $pos + 1;
  13. }

  14. for my $name ( keys %H ) {
  15.     open my $old, '<', "$dir/$name"    or die "$dir-$name\t$!";
  16.     open my $new, '>', "$newdir/$name" or die "$newdir-$name\t$!";
  17.     print "$name$/";

  18.     while (<$old>) {
  19.         print $new $_ and next if /^>/;
  20.         chomp;
  21.         print $new substr( $_, $H{$name}{pos}, $H{$name}{len} ) . $/;
  22.     }
  23.     close $old;
  24.     close $new;
  25. }

  26. print "$/finish$/";

  27. __DATA__
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
20 [报告]
发表于 2014-04-02 09:36 |只看该作者
@stanley_tam@rubyish两位大神真心名不虚传啊!!!学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP