/[MITgcm]/MITgcm_contrib/jmc_script/extract_StD
ViewVC logotype

Annotation of /MITgcm_contrib/jmc_script/extract_StD

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download)
Mon Apr 10 20:10:46 2006 UTC (18 years ago) by jmc
Branch: MAIN
Changes since 1.1: +90 -24 lines
add more options

1 jmc 1.1 #!/bin/sh
2 jmc 1.2
3     # $Header: $
4     # $Name: $
5    
6     add=0 ; mut=0 ;
7     if [ $# -ge 3 ]
8     then
9     if test $1 = '-a' ; then add=1; shift; fi
10     if test $1 = '-s' ; then mut=1; shift; fi
11     if test $add = 0 ; then if test $1 = '-a' ; then add=1; shift; fi ; fi
12     fi
13    
14 jmc 1.1 case $# in
15 jmc 1.2 0|1|2) echo "Usage: `basename $0` [-a][-s] input_fil out_pfix out_sfix [field_name_list]"
16 jmc 1.1 echo " from ASCII Diagnostics-Stats file (=input_fil) and for each field"
17     echo " (in field_name_list), extract the associated numerical values and"
18 jmc 1.2 echo " put them in a separated file: {out_pfix}_{VAR}.{out_sfix}"
19     echo " -a : append to output_file ; -s : silent mode "
20     echo " '=' as out_pfix -> take {input_fil} basename "
21 jmc 1.1 exit 9 ;;
22     *) ;;
23     esac
24    
25     inpFil=$1
26 jmc 1.2 if test $2 = '='
27     then prfx=`basename $inpFil | sed 's/\..*\.txt//'`
28     else prfx=$2 ; fi
29     sufx=$3
30 jmc 1.1 tmpFil='TTT.'$$
31 jmc 1.2 tmpfil='ttt.'$$
32    
33     echo 'output pre,sufix:' $prfx','$sufx '; input file:' $inpFil
34     if test $# = '3'
35     then listV=`sed -n '/^# Fields /s/# Fields ://p' $inpFil`
36 jmc 1.1 else
37 jmc 1.2 shift; shift; shift; listV=$*
38     fi
39     if test $mut = 0 ; then
40     grep '^# Fields ' $inpFil
41     echo 'selected var:' $listV
42     #echo 'sufx, tmpFil:' $sufx $tmpFil
43 jmc 1.1 fi
44    
45 jmc 1.2 flag=1;
46 jmc 1.1 for vv in $listV
47     do
48     case $vv in
49 jmc 1.2 'Eta') var='ETAN' ; vfl=$vv ;;
50     'ETAN' ) var=$vv ; vfl='Eta' ;;
51     'Et2') var='ETANSQ' ; vfl=$vv ;;
52     'ETANSQ' ) var=$vv ; vfl='Et2' ;;
53     'T') var='THETA' ; vfl=$vv ;;
54     'THETA' ) var=$vv ; vfl='T' ;;
55     'S') var='SALT' ; vfl=$vv ;;
56     'SALT' ) var=$vv ; vfl='S' ;;
57     'U') var='UVEL' ; vfl=$vv ;;
58     'UVEL' ) var=$vv ; vfl='U' ;;
59     'V') var='VVEL' ; vfl=$vv ;;
60     'VVEL' ) var=$vv ; vfl='V' ;;
61     'W') var='WVEL' ; vfl=$vv ;;
62     'WVEL' ) var=$vv ; vfl='W' ;;
63     'Phi') var='PHIHYD' ; vfl=$vv ;;
64     'PHIHYD' ) var=$vv ; vfl='Phi' ;;
65     'U2') var='UVELSQ' ; vfl=$vv ;;
66     'UVELSQ' ) var=$vv ; vfl='U2' ;;
67     'V2') var='VVELSQ' ; vfl=$vv ;;
68     'VVELSQ' ) var=$vv ; vfl='V2' ;;
69     *) var=$vv ; vfl=$vv ;;
70 jmc 1.1 esac
71     #echo 'grep -m 1' "^ field : ${var} " $inpFil
72     #grep -m 1 "^ field : ${var} " $inpFil
73     nLev=`grep -m 1 "^ field : ${var} " $inpFil | sed 's/.*=//'`
74     if test ${nLev}'xx' = 'xx'
75     then
76     echo 'WARNING variable:' $var 'not found in file' $inpFil
77     else
78     #echo 'nLev=' $nLev
79 jmc 1.2 #- first variable: extract Header, then Iter Numbers:
80     if test $flag = 1
81     then flag=0
82     outFil=${prfx}'_head'.$sufx
83     nLin=`sed -n "/^# end of header/=" $inpFil`
84     head -$nLin $inpFil > $tmpFil
85     if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
86     if test -f $outFil
87     then
88     diff $tmpFil $outFil > /dev/null
89     out=$?
90     if test $out != '0'
91     then
92     echo 'WARNNING : get Different header file:' $outFil
93     cat $tmpFil >> $outFil
94     fi
95     rm -f $tmpFil
96     else mv $tmpFil $outFil
97     if test $mut = 0 ; then echo 'extract Header (' $nLin 'lines ) ==> ' $outFil ; fi
98     fi
99     #----
100     outFil=${prfx}'_Iter'.$sufx
101     if test $mut = 0 ; then echo 'extract Iteration Nb ==> outFil=' $outFil ; fi
102     if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
103     touch $outFil
104     rList=`sed -n '/^# Regions /s/# Regions ://p' $inpFil`
105     for j in $rList ; do jj=$j ; done
106     grep "^ field : ${var} " $inpFil | grep "$j ; nb.Lev =" | \
107     sed 's/.*Iter =//' | sed 's/; region.*//g' >> $outFil
108     fi
109     #----
110     outFil=${prfx}'_'$vfl.$sufx
111     if test $mut = 0 ; then echo 'extract variable:' $var ', outFil=' $outFil ; fi
112 jmc 1.1 #- echo set of sed instruction to file sedFil :
113     sedFil=$tmpFil.$vv
114     rm -f $sedFil
115     echo "/^ field : $var /{" > $sedFil
116     if test $nLev = 1 ; then k=0 ; else k=-1 ; fi
117     while [ $k -le $nLev ]
118     do
119     echo "N" >> $sedFil
120     k=`expr $k + 1`
121     done
122     echo "p" >> $sedFil
123     echo "}" >> $sedFil
124     #- extract records of variable "var" using sed command & sedFil
125     sed -n -f $sedFil $inpFil > $tmpFil
126 jmc 1.2 if test $mut = 0 ; then head -1 $tmpFil ; fi
127     if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
128     touch $outFil
129     sed '/^ k /d' $tmpFil | sed '/^ field /d' >> $outFil
130 jmc 1.1 rm -f $sedFil $tmpFil
131     fi
132     done
133     exit

  ViewVC Help
Powered by ViewVC 1.1.22