Chinaunix

标题: 怎么将结果输出到多个文本 [打印本页]

作者: 很宅的男    时间: 2016-10-14 10:21
标题: 怎么将结果输出到多个文本
本帖最后由 很宅的男 于 2016-10-14 10:25 编辑
  1. JF010001_001  [
  2.   -0.4976308 -15.11435 -14.07319 -14.73652 -12.40263 -8.919751 -9.241934 -13.30885 -12.94467 -0.9947345 -5.289194 -15.20705 -4.435282 -14.33005 -12.56616 -9.570408 -13.50989 -12.99365 -13.17705 -7.68175 -15.09027 -14.40681 -7.388959 -14.79304 -9.430817 -13.30785 -13.91133 -15.14624 -13.26448 -16.24634 -14.42035 -14.69762 -13.06907 -13.92113 -6.599867 -16.11545 -13.5238 -12.33458 -13.81118 -17.78513 -14.51113 -9.610849 -17.75916 -13.19057 -15.87737 -13.18622 -13.2493 -14.39678 -10.79917 -12.00336 -11.80744 -14.28799 -13.08898 -9.319864 -6.151532 -10.67372 -13.72164 -15.97973 -13.44776 -11.5431 -13.328 -12.77358 -13.76712 -15.92707 -15.62565 -12.35836 -13.36001 -12.1712 -13.81794 -14.80945 -13.93962 -16.30116 -15.29088 -13.9798 -15.17189 -14.02892 -12.32962 -13.34761 -14.4769 -10.4759 -10.59203 -14.15576 -14.50003 -11.90241
  3.   -0.4286098 -15.52006 -14.45782 -15.2543 -13.24257 -9.269724 -10.26199 -14.0871 -13.66951 -1.075447 -5.902932 -15.73346 -6.433881 -14.54199 -12.97235 -9.749544 -13.859 -14.1427 -13.60229 -8.310029 -15.9679 -15.09697 -8.309935 -15.37859 -9.709194 -14.48385 -14.16212 -15.14511 -14.18556 -16.76377 -15.23199 -14.80561 -13.38114 -14.23376 -7.670321 -16.29078 -13.96735 -13.11451 -14.75158 -18.19124 -14.68001 -10.3726 -20.42161 -16.83154 -19.5169 -16.12105 -16.68032 -17.48241 -14.1363 -14.45619 -14.91978 -17.30317 -16.85337 -13.11343 -7.59408 -15.19278 -16.97553 -19.25315 -16.36188 -13.76742 -16.50495 -15.66461 -16.5326 -19.03967 -18.24148 -15.82673 -17.27408 -16.42863 -16.25935 -18.78489 -16.78156 -19.51006 -18.32454 -17.21379 -18.61867 -17.57475 -15.98013 -15.61132 -17.33378 -13.74183 -13.43599 -17.1345 -17.36407
  4.   -2.20167 -17.85997 -17.13088 -17.70187 -15.51144 -10.70817 -13.66142 -17.02667 -16.37534 -0.1184443 -8.809753 -17.72066 -11.83916 -15.9146 -15.15758 -10.99791 -15.69651 -16.30374 -16.27624 -10.00622 -18.37856 -17.6988 -10.27363 -18.99123 -10.72968 -16.45831 -17.16539 -16.3425  ]
  5. JF010001_008  [
  6.   -0.1141755 -12.70077 -12.85924 -12.87205 -11.43855 -6.903705 -9.610289 -11.28247 -11.1914 -2.483123 -4.576998 -13.33492 -9.346786 -11.89632 -11.39485 -7.367419 -10.45122 -12.0892 -10.54556 -5.804185 -13.95412 -13.19231 -7.216301 -12.8837 -8.273722 -12.343 -12.28896 -11.6485 -13.40136 -13.46197 -10.0817 -11.48715 -11.02273 -11.39905 -6.134798 -12.66079 -12.59802 -11.92332 -9.286308 -14.30421 -13.42358 -5.710855 -14.62212 -17.65285 -15.66903 -18.08914 -16.24863 -14.89477 -15.23636 -14.49819 -15.97255 -12.61971 -16.62127 -15.78372 -14.28142 -9.97547 -14.11617 -16.2526 -18.73984 -15.57616 -11.65039 -16.49042 -16.01309 -15.78485 -19.10103 -18.03356 -15.90148 -17.29946 -15.99308 -16.46096 -17.59023 -16.96824 -16.23303 -17.74468 -14.78152 -17.87639 -17.82803 -15.82684 -16.60353 -17.04974 -14.5432 -12.15305 -17.0866 -16.57143 -15.83137 ]
复制代码
我有一个这样的文本,现在需要把每一对[]内的内容输出到一个文本里,也就是有多少对[],就要输出到多少个文本,请问该怎么输出呢,还请各位大神不吝赐教,谢谢啦
作者: sunzhiguolu    时间: 2016-10-14 11:39
    JF010001_001  [
      -0.4976308 -15.11435 -14.07319 -14.73652 -12.40263 -8.919751 -9.241934 -13.30885 -12.94467 -0.9947345 -5.289194 -15.20705 -4.435282 -14.33005 -12.56616 -9.570408 -13.50989 -12.99365 -13.17705 -7.68175 -15.09027 -14.40681 -7.388959 -14.79304 -9.430817 -13.30785 -13.91133 -15.14624 -13.26448 -16.24634 -14.42035 -14.69762 -13.06907 -13.92113 -6.599867 -16.11545 -13.5238 -12.33458 -13.81118 -17.78513 -14.51113 -9.610849 -17.75916 -13.19057 -15.87737 -13.18622 -13.2493 -14.39678 -10.79917 -12.00336 -11.80744 -14.28799 -13.08898 -9.319864 -6.151532 -10.67372 -13.72164 -15.97973 -13.44776 -11.5431 -13.328 -12.77358 -13.76712 -15.92707 -15.62565 -12.35836 -13.36001 -12.1712 -13.81794 -14.80945 -13.93962 -16.30116 -15.29088 -13.9798 -15.17189 -14.02892 -12.32962 -13.34761 -14.4769 -10.4759 -10.59203 -14.15576 -14.50003 -11.90241
      -0.4286098 -15.52006 -14.45782 -15.2543 -13.24257 -9.269724 -10.26199 -14.0871 -13.66951 -1.075447 -5.902932 -15.73346 -6.433881 -14.54199 -12.97235 -9.749544 -13.859 -14.1427 -13.60229 -8.310029 -15.9679 -15.09697 -8.309935 -15.37859 -9.709194 -14.48385 -14.16212 -15.14511 -14.18556 -16.76377 -15.23199 -14.80561 -13.38114 -14.23376 -7.670321 -16.29078 -13.96735 -13.11451 -14.75158 -18.19124 -14.68001 -10.3726 -20.42161 -16.83154 -19.5169 -16.12105 -16.68032 -17.48241 -14.1363 -14.45619 -14.91978 -17.30317 -16.85337 -13.11343 -7.59408 -15.19278 -16.97553 -19.25315 -16.36188 -13.76742 -16.50495 -15.66461 -16.5326 -19.03967 -18.24148 -15.82673 -17.27408 -16.42863 -16.25935 -18.78489 -16.78156 -19.51006 -18.32454 -17.21379 -18.61867 -17.57475 -15.98013 -15.61132 -17.33378 -13.74183 -13.43599 -17.1345 -17.36407
      -2.20167 -17.85997 -17.13088 -17.70187 -15.51144 -10.70817 -13.66142 -17.02667 -16.37534 -0.1184443 -8.809753 -17.72066 -11.83916 -15.9146 -15.15758 -10.99791 -15.69651 -16.30374 -16.27624 -10.00622 -18.37856 -17.6988 -10.27363 -18.99123 -10.72968 -16.45831 -17.16539 -16.3425  ]
    JF010001_008  [
      -0.1141755 -12.70077 -12.85924 -12.87205 -11.43855 -6.903705 -9.610289 -11.28247 -11.1914 -2.483123 -4.576998 -13.33492 -9.346786 -11.89632 -11.39485 -7.367419 -10.45122 -12.0892 -10.54556 -5.804185 -13.95412 -13.19231 -7.216301 -12.8837 -8.273722 -12.343 -12.28896 -11.6485 -13.40136 -13.46197 -10.0817 -11.48715 -11.02273 -11.39905 -6.134798 -12.66079 -12.59802 -11.92332 -9.286308 -14.30421 -13.42358 -5.710855 -14.62212 -17.65285 -15.66903 -18.08914 -16.24863 -14.89477 -15.23636 -14.49819 -15.97255 -12.61971 -16.62127 -15.78372 -14.28142 -9.97547 -14.11617 -16.2526 -18.73984 -15.57616 -11.65039 -16.49042 -16.01309 -15.78485 -19.10103 -18.03356 -15.90148 -17.29946 -15.99308 -16.46096 -17.59023 -16.96824 -16.23303 -17.74468 -14.78152 -17.87639 -17.82803 -15.82684 -16.60353 -17.04974 -14.5432 -12.15305 -17.0866 -16.57143 -15.83137 ]
如果前面的那个值在整个文件中唯一的话, 用哪个名称作为文件名就行了.

作者: moperyblue    时间: 2016-10-14 12:21

  1. awk '/_/{close(f);f=$1;next}/]/{sub(/\s+]/,"")}{print > f}' file
复制代码

作者: 很宅的男    时间: 2016-10-14 13:24
回复 2# sunzhiguolu

这个我知道,只是我不知道怎么保存那么多文件到不同的文本里去
作者: 很宅的男    时间: 2016-10-14 13:24
回复 3# moperyblue

这个方法可行,谢谢啦
作者: sunzhiguolu    时间: 2016-10-14 17:32
本帖最后由 sunzhiguolu 于 2016-10-14 17:33 编辑

回复 4# 很宅的男
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($fn, $lines);
  5. while (<DATA>){
  6.         my @aList = split;
  7.         if ($aList[-1] eq '['){
  8.                 $fn = $aList[0];
  9.                 next;
  10.         }
  11.         $lines .= $_;
  12.         if ($aList[-1] eq ']'){
  13.                 $lines =~ y/]//d;
  14.                 open (my $fhW, '>', $fn);
  15.                 print $fhW $lines;
  16.                 close ($fhW);
  17.                 $lines = "";
  18.         }
  19. }

  20. __DATA__
  21.     JF010001_001  [
  22.       -0.4976308 -15.11435 -14.07319 -14.73652 -12.40263 -8.919751 -9.241934 -13.30885 -12.94467 -0.9947345 -5.289194 -15.20705 -4.435282 -14.33005 -12.56616 -9.570408 -13.50989 -12.99365 -13.17705 -7.68175 -15.09027 -14.40681 -7.388959 -14.79304 -9.430817 -13.30785 -13.91133 -15.14624 -13.26448 -16.24634 -14.42035 -14.69762 -13.06907 -13.92113 -6.599867 -16.11545 -13.5238 -12.33458 -13.81118 -17.78513 -14.51113 -9.610849 -17.75916 -13.19057 -15.87737 -13.18622 -13.2493 -14.39678 -10.79917 -12.00336 -11.80744 -14.28799 -13.08898 -9.319864 -6.151532 -10.67372 -13.72164 -15.97973 -13.44776 -11.5431 -13.328 -12.77358 -13.76712 -15.92707 -15.62565 -12.35836 -13.36001 -12.1712 -13.81794 -14.80945 -13.93962 -16.30116 -15.29088 -13.9798 -15.17189 -14.02892 -12.32962 -13.34761 -14.4769 -10.4759 -10.59203 -14.15576 -14.50003 -11.90241
  23.       -0.4286098 -15.52006 -14.45782 -15.2543 -13.24257 -9.269724 -10.26199 -14.0871 -13.66951 -1.075447 -5.902932 -15.73346 -6.433881 -14.54199 -12.97235 -9.749544 -13.859 -14.1427 -13.60229 -8.310029 -15.9679 -15.09697 -8.309935 -15.37859 -9.709194 -14.48385 -14.16212 -15.14511 -14.18556 -16.76377 -15.23199 -14.80561 -13.38114 -14.23376 -7.670321 -16.29078 -13.96735 -13.11451 -14.75158 -18.19124 -14.68001 -10.3726 -20.42161 -16.83154 -19.5169 -16.12105 -16.68032 -17.48241 -14.1363 -14.45619 -14.91978 -17.30317 -16.85337 -13.11343 -7.59408 -15.19278 -16.97553 -19.25315 -16.36188 -13.76742 -16.50495 -15.66461 -16.5326 -19.03967 -18.24148 -15.82673 -17.27408 -16.42863 -16.25935 -18.78489 -16.78156 -19.51006 -18.32454 -17.21379 -18.61867 -17.57475 -15.98013 -15.61132 -17.33378 -13.74183 -13.43599 -17.1345 -17.36407
  24.       -2.20167 -17.85997 -17.13088 -17.70187 -15.51144 -10.70817 -13.66142 -17.02667 -16.37534 -0.1184443 -8.809753 -17.72066 -11.83916 -15.9146 -15.15758 -10.99791 -15.69651 -16.30374 -16.27624 -10.00622 -18.37856 -17.6988 -10.27363 -18.99123 -10.72968 -16.45831 -17.16539 -16.3425  ]
  25.     JF010001_008  [
  26.       -0.1141755 -12.70077 -12.85924 -12.87205 -11.43855 -6.903705 -9.610289 -11.28247 -11.1914 -2.483123 -4.576998 -13.33492 -9.346786 -11.89632 -11.39485 -7.367419 -10.45122 -12.0892 -10.54556 -5.804185 -13.95412 -13.19231 -7.216301 -12.8837 -8.273722 -12.343 -12.28896 -11.6485 -13.40136 -13.46197 -10.0817 -11.48715 -11.02273 -11.39905 -6.134798 -12.66079 -12.59802 -11.92332 -9.286308 -14.30421 -13.42358 -5.710855 -14.62212 -17.65285 -15.66903 -18.08914 -16.24863 -14.89477 -15.23636 -14.49819 -15.97255 -12.61971 -16.62127 -15.78372 -14.28142 -9.97547 -14.11617 -16.2526 -18.73984 -15.57616 -11.65039 -16.49042 -16.01309 -15.78485 -19.10103 -18.03356 -15.90148 -17.29946 -15.99308 -16.46096 -17.59023 -16.96824 -16.23303 -17.74468 -14.78152 -17.87639 -17.82803 -15.82684 -16.60353 -17.04974 -14.5432 -12.15305 -17.0866 -16.57143 -15.83137 ]
复制代码




作者: 很宅的男    时间: 2016-10-23 04:31
回复 3# moperyblue
你好,我在用这个awk命令的时候报了个错,请问你知道是怎么回事吗?谢谢啦,错误如下:
  1. awk: (FILENAME=post_train_all FNR=1) fatal: expression for `>' redirection has null string value
复制代码



作者: moperyblue    时间: 2016-10-23 09:39
回复 7# 很宅的男

再加个判断吧 因为文件第一行不是有效数据
  1. awk '/_/{close(f);f=$1;next}/]/{sub(/\s+]/,"")}length(f){print > f}' post_train_all
复制代码

作者: 华小飞_Perl    时间: 2016-11-06 23:12
写了一个,可以自定义生成目录,并且输出的全部文件在该目录中。
  1. #!/usr/bin/perl

  2. use warnings;
  3. use strict;

  4. my $return = system( 'mkdir /media/SGI-HLF/files' );
  5. unless ( $return == 0 ) {
  6.         die "Can't mkdir: $?";
  7. } else {
  8.         print "The target dir is created successfully!\n";
  9. }
  10. chdir '/media/SGI-HLF/files' or die "Can't cd the dir: $!";

  11. my $filename;
  12. while (<>) {
  13.         chomp;
  14.         if (/^(JF.*?)\s+/m) {
  15.                 $filename = $1;
  16.                 next;
  17.         }
  18.         open OUTPUT, '>', $filename.'.txt' or die "Can't output the file: $!";
  19.         s/^\s+//m;
  20.         s/\]$//m;
  21.         print OUTPUT $_, "\n";
  22. }
  23. close OUTPUT;
复制代码

其中的路径可以改一下。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2