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

1 jmc 1.4 #! /usr/bin/env bash
2 jmc 1.2
3 jmc 1.4 # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/extract_StD,v 1.3 2008/05/29 23:47:13 jmc Exp $
4 jmc 1.2 # $Name: $
5    
6     add=0 ; mut=0 ;
7 jmc 1.4 if [ $# -ge 3 ]
8 jmc 1.2 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 jmc 1.4 if test $mut = 0 ; then
40 jmc 1.2 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 jmc 1.3 'ETAN' ) var=$vv ; vfl='Eta';;
51 jmc 1.2 '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 jmc 1.3 '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 jmc 1.2 'U2') var='UVELSQ' ; vfl=$vv ;;
70     'UVELSQ' ) var=$vv ; vfl='U2' ;;
71     'V2') var='VVELSQ' ; vfl=$vv ;;
72     'VVELSQ' ) var=$vv ; vfl='V2' ;;
73 jmc 1.3 'W2') var='WVELSQ' ; vfl=$vv ;;
74     'WVELSQ' ) var=$vv ; vfl='W2' ;;
75 jmc 1.2 *) var=$vv ; vfl=$vv ;;
76 jmc 1.1 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 jmc 1.2 #- 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 jmc 1.4 head -$nLin $inpFil > $tmpFil
91 jmc 1.2 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 jmc 1.1 #- 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 jmc 1.4 do
125 jmc 1.1 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 jmc 1.2 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 jmc 1.4 sed '/^ k /d' $tmpFil | sed '/^ field /d' >> $outFil
136 jmc 1.1 rm -f $sedFil $tmpFil
137     fi
138     done
139     exit

  ViewVC Help
Powered by ViewVC 1.1.22