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

Contents of /MITgcm_contrib/jmc_script/extract_StD

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


Revision 1.2 - (show 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 #!/bin/sh
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 case $# in
15 0|1|2) echo "Usage: `basename $0` [-a][-s] input_fil out_pfix out_sfix [field_name_list]"
16 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 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 exit 9 ;;
22 *) ;;
23 esac
24
25 inpFil=$1
26 if test $2 = '='
27 then prfx=`basename $inpFil | sed 's/\..*\.txt//'`
28 else prfx=$2 ; fi
29 sufx=$3
30 tmpFil='TTT.'$$
31 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 else
37 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 fi
44
45 flag=1;
46 for vv in $listV
47 do
48 case $vv in
49 '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 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 #- 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 #- 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 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 rm -f $sedFil $tmpFil
131 fi
132 done
133 exit

  ViewVC Help
Powered by ViewVC 1.1.22