Board logo

标题: [文本处理] 批处理如何把文件内的内容按值排序? [打印本页]

作者: sweet惜缘    时间: 2011-12-13 21:55     标题: 批处理如何把文件内的内容按值排序?

文件见附件,要求按文件最后一项“Int_energy”的值从小到大将文件内容排序。结果输出到另一文件(excel类型)。文件中“ZINC14474813    Elapsed time  2 seconds        ERROR:  Could not complete growth Confirm that the grid box is large enough to contain the ligand  and try increasing max_orientations.”内容可要可不要。谢谢!
作者: xudaweb    时间: 2011-12-14 10:19

纯粹的Excel操作?
作者: sweet惜缘    时间: 2011-12-14 12:25

结果输出的文件类型最好是excel类型,其他类型也可以。主要是把文件的内容按文件最后一项“Int_energy”的值从小到大排序。
作者: xudaweb    时间: 2011-12-15 13:23

选中Int_energy这列,在"Data"选项中点击"Sort"即可。纯粹的Excel排序。
如果需要脚本,还得高手写个VBS处理...
作者: sxw    时间: 2011-12-15 13:31

有重复或一模一样的行吗?
作者: sxw    时间: 2011-12-15 14:06

排序后,在附件上了。(我把你的数据复制为txt格式了)
作者: sweet惜缘    时间: 2011-12-15 14:31

不好意思,还需打扰下,我需要的是具体操作过程或代码。因为我需要排序的文件很多,附件中只是一小部分。麻烦您指导下。谢谢!
作者: sxw    时间: 2011-12-15 14:57

回复 7# sweet惜缘

我用的Perl脚本
  1. use strict;
  2. use warnings;
  3. my @lines;
  4. open FH,"<","test.txt" or die;
  5. while (<FH>){
  6. next if /^\s+$/;
  7. push @lines,$_ if /.{50,}/;
  8. }
  9. # my @lines=<FH>;
  10. use Sort::Fields;
  11. my @sorted = fieldsort ["10n"], @lines;
  12. print "@sorted\n";
复制代码

作者: HAT    时间: 2011-12-16 11:27

回复 7# sweet惜缘


如果你所有的文件都是保存在Excel里面的,可以考虑使用VBA,或者用VBS来处理也行。
BAT适合处理纯文本格式的文件。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2