/[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.4 - (show annotations) (download)
Tue Feb 11 22:17:43 2020 UTC (4 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +7 -7 lines
switch to bash and remove trailing blanks

1 #! /usr/bin/env bash
2
3 # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/extract_StD,v 1.3 2008/05/29 23:47:13 jmc Exp $
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 'T') var='THETA' ; vfl=$vv ;;
52 'THETA' ) var=$vv ; vfl='T' ;;
53 'S') var='SALT' ; vfl=$vv ;;
54 'SALT' ) var=$vv ; vfl='S' ;;
55 'U') var='UVEL' ; vfl=$vv ;;
56 'UVEL' ) var=$vv ; vfl='U' ;;
57 'V') var='VVEL' ; vfl=$vv ;;
58 'VVEL' ) var=$vv ; vfl='V' ;;
59 'W') var='WVEL' ; vfl=$vv ;;
60 'WVEL' ) var=$vv ; vfl='W' ;;
61 'Phi') var='PHIHYD' ; vfl=$vv ;;
62 'PHIHYD' ) var=$vv ; vfl='Phi';;
63 'Et2') var='ETANSQ' ; vfl=$vv ;;
64 'ETANSQ' ) var=$vv ; vfl='Et2';;
65 'T2') var='THETASQ' ; vfl=$vv ;;
66 'THETASQ' ) var=$vv ; vfl='T2' ;;
67 'S2') var='SALTSQ' ; vfl=$vv ;;
68 'SALTSQ' ) var=$vv ; vfl='S2' ;;
69 'U2') var='UVELSQ' ; vfl=$vv ;;
70 'UVELSQ' ) var=$vv ; vfl='U2' ;;
71 'V2') var='VVELSQ' ; vfl=$vv ;;
72 'VVELSQ' ) var=$vv ; vfl='V2' ;;
73 'W2') var='WVELSQ' ; vfl=$vv ;;
74 'WVELSQ' ) var=$vv ; vfl='W2' ;;
75 *) var=$vv ; vfl=$vv ;;
76 esac
77 #echo 'grep -m 1' "^ field : ${var} " $inpFil
78 #grep -m 1 "^ field : ${var} " $inpFil
79 nLev=`grep -m 1 "^ field : ${var} " $inpFil | sed 's/.*=//'`
80 if test ${nLev}'xx' = 'xx'
81 then
82 echo 'WARNING variable:' $var 'not found in file' $inpFil
83 else
84 #echo 'nLev=' $nLev
85 #- first variable: extract Header, then Iter Numbers:
86 if test $flag = 1
87 then flag=0
88 outFil=${prfx}'_head'.$sufx
89 nLin=`sed -n "/^# end of header/=" $inpFil`
90 head -$nLin $inpFil > $tmpFil
91 if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
92 if test -f $outFil
93 then
94 diff $tmpFil $outFil > /dev/null
95 out=$?
96 if test $out != '0'
97 then
98 echo 'WARNNING : get Different header file:' $outFil
99 cat $tmpFil >> $outFil
100 fi
101 rm -f $tmpFil
102 else mv $tmpFil $outFil
103 if test $mut = 0 ; then echo 'extract Header (' $nLin 'lines ) ==> ' $outFil ; fi
104 fi
105 #----
106 outFil=${prfx}'_Iter'.$sufx
107 if test $mut = 0 ; then echo 'extract Iteration Nb ==> outFil=' $outFil ; fi
108 if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
109 touch $outFil
110 rList=`sed -n '/^# Regions /s/# Regions ://p' $inpFil`
111 for j in $rList ; do jj=$j ; done
112 grep "^ field : ${var} " $inpFil | grep "$j ; nb.Lev =" | \
113 sed 's/.*Iter =//' | sed 's/; region.*//g' >> $outFil
114 fi
115 #----
116 outFil=${prfx}'_'$vfl.$sufx
117 if test $mut = 0 ; then echo 'extract variable:' $var ', outFil=' $outFil ; fi
118 #- echo set of sed instruction to file sedFil :
119 sedFil=$tmpFil.$vv
120 rm -f $sedFil
121 echo "/^ field : $var /{" > $sedFil
122 if test $nLev = 1 ; then k=0 ; else k=-1 ; fi
123 while [ $k -le $nLev ]
124 do
125 echo "N" >> $sedFil
126 k=`expr $k + 1`
127 done
128 echo "p" >> $sedFil
129 echo "}" >> $sedFil
130 #- extract records of variable "var" using sed command & sedFil
131 sed -n -f $sedFil $inpFil > $tmpFil
132 if test $mut = 0 ; then head -1 $tmpFil ; fi
133 if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
134 touch $outFil
135 sed '/^ k /d' $tmpFil | sed '/^ field /d' >> $outFil
136 rm -f $sedFil $tmpFil
137 fi
138 done
139 exit

  ViewVC Help
Powered by ViewVC 1.1.22