in reply to Parsing Guassian '03 Log Files
Something like:
use strict; use warnings; my $file = <<FILE; ---------------------------- ! Optimized Parameters ! ! (Angstroms and Degrees) ! ---------------------- ------------------- +----------------------------------------------------- ! Name Value Derivative information (Atomic Units) + ! --------------------------------------------------------------------- +--- ! hc2 1.1136 -DE/DX = 0.0 + ! ! nc3 1.3392 -DE/DX = 0.0 + ! ! nch3 117.4979 -DE/DX = 0.0 + ! ! hn4 0.9929 -DE/DX = 0.0 + ! ---------------------------------------------------------------------- +-- GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGr +adGrad FILE open my $inFile, '<', \$file; my $valueStart; my $valueLength; my $min = 1.0; my $max = 2.0; while (<$inFile>) { next unless m/Optimized Parameters/ .. m/GradGradGrad/; next unless $valueLength or /^(.*?Name)(\s*Value)/; if (! $valueLength) { $valueStart = length $1; $valueLength = length $2; next; } my $value = substr $_, $valueStart, $valueLength; next unless $value =~ /^\s*[+-]?\d+(\.\d*)?\s*$/; next if $value < $min or $value > $max; print $_; } close $inFile;
Prints:
! hc2 1.1136 -DE/DX = 0.0 + ! ! nc3 1.3392 -DE/DX = 0.0 + !
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Parsing Guassian '03 Log Files
by Andrew_Levenson (Hermit) on Jan 31, 2008 at 02:15 UTC | |
by GrandFather (Saint) on Jan 31, 2008 at 02:34 UTC | |
by Andrew_Levenson (Hermit) on Jan 31, 2008 at 06:17 UTC | |
by Andrew_Levenson (Hermit) on Jan 31, 2008 at 20:01 UTC | |
by GrandFather (Saint) on Jan 31, 2008 at 20:25 UTC | |
by Andrew_Levenson (Hermit) on Jan 31, 2008 at 21:31 UTC |