#!/usr/bin/env perl # # remove lines from input file. Lines are specified one per line in the # line file. # use strict; @ARGV < 1 && die "usage: $0 [input file]\n"; my %lines; # ignore first five lines $lines{1} = $lines{2} = $lines{3} = $lines{4} = $lines{5} = 1; if ( open(LINEFILE,"$ARGV[0]") ) { while () { s/[ \t\n]//g; if ( /\-/ ) { my ($beg,$end) = split("-"); foreach my $line ($beg..$end) { $lines{$line} = 1; } } else { $lines{$_} = 1; } } close(LINEFILE); } shift(@ARGV); my $line = 0; while (<>) { $line++; if ( exists $lines{$line} || /\$CPU_START/ || /\$CPU_TIME/ || /cpu-time:?.*=.*[0-9.]+/i || /cpu=\s*[0-9.e-]+ sec\./i || /CPU-time.*:\s+[0-9.]+$/ || /^\s*User: .*on: .*at:/ || /^\s*ASSFIL: file .* opened.$/ || /^\s*MISCOM: rewinding file / || /^\s*(IC\> )?REMARKS? FILENAME=".*"/ || /^\s*(IC\> )?REMARKS? DATE:.*created by user:/ || /^\s*HEAP: maximum use=/ || /^\s*NATOM=.*\(MAXA=.*\)/ || /^\s*NATOM=.*\(MAXA=.*\)/ || /^\s*NBOND=.*\(MAXB=.*6000\)/ || /^\s*NTHETA=.*\(MAXT=.*\)/ || /^\s*NPHI=.*\(MAXP=.*\)/ || /^\s*NDON=.*\(MAXPAD=.*\)/ || /^\s*NNB=.*\(MAXNB=.*\)/ || /^\s*X-PLOR: total CPU time=/ || /^\s*X-PLOR: entry time at/ || /^\s*X-PLOR: exit time at/ ) { print "\n"; # to keep line numbers correct } elsif ( /^\s*RELAX: allocating space for\s+\d+\s+intensities\.$/ ) { print ""; # screws up line numbers. Avoid these. } else { print; } }