Parent Directory
|
Revision Log
|
Revision Graph
|
Patch
--- MITgcm_contrib/jmc_script/extract_StD 2006/01/07 16:23:29 1.1
+++ MITgcm_contrib/jmc_script/extract_StD 2006/04/10 20:10:46 1.2
@@ -1,40 +1,72 @@
#!/bin/sh
+
+# $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/jmc_script/extract_StD,v 1.2 2006/04/10 20:10:46 jmc Exp $
+# $Name: $
+
+add=0 ; mut=0 ;
+if [ $# -ge 3 ]
+then
+ if test $1 = '-a' ; then add=1; shift; fi
+ if test $1 = '-s' ; then mut=1; shift; fi
+ if test $add = 0 ; then if test $1 = '-a' ; then add=1; shift; fi ; fi
+fi
+
case $# in
- 0|1) echo "Usage: `basename $0` input_fil outp_sufix [field_name_list]"
+0|1|2) echo "Usage: `basename $0` [-a][-s] input_fil out_pfix out_sfix [field_name_list]"
echo " from ASCII Diagnostics-Stats file (=input_fil) and for each field"
echo " (in field_name_list), extract the associated numerical values and"
- echo " put them in a separated file: stDiag_{VAR}.{outp_sufix}"
+ echo " put them in a separated file: {out_pfix}_{VAR}.{out_sfix}"
+ echo " -a : append to output_file ; -s : silent mode "
+ echo " '=' as out_pfix -> take {input_fil} basename "
exit 9 ;;
- 2) listV='T' ;;
*) ;;
esac
inpFil=$1
-#outFil=$2
-sufx=$2
+if test $2 = '='
+then prfx=`basename $inpFil | sed 's/\..*\.txt//'`
+else prfx=$2 ; fi
+sufx=$3
tmpFil='TTT.'$$
-if test $# = '2'
-then listV='T'
+tmpfil='ttt.'$$
+
+echo 'output pre,sufix:' $prfx','$sufx '; input file:' $inpFil
+if test $# = '3'
+then listV=`sed -n '/^# Fields /s/# Fields ://p' $inpFil`
else
- shift; shift; listV=$*
+ shift; shift; shift; listV=$*
+fi
+if test $mut = 0 ; then
+ grep '^# Fields ' $inpFil
+ echo 'selected var:' $listV
+#echo 'sufx, tmpFil:' $sufx $tmpFil
fi
-echo $inpFil $sufx $listV $tmpFil
-grep '^# Fields ' $inpFil
+flag=1;
for vv in $listV
do
- outFil='stDiag_'$vv.$sufx
case $vv in
- 'Eta') var='ETAN';;
- 'Et2') var='ETANSQ';;
- 'T') var='THETA';;
- 'S') var='SALT' ;;
- 'U') var='UVEL' ;;
- 'V') var='VVEL' ;;
- 'W') var='WVEL' ;;
- 'U2') var='UVELSQ' ;;
- 'V2') var='VVELSQ' ;;
- *) var=$vv ;;
+ 'Eta') var='ETAN' ; vfl=$vv ;;
+ 'ETAN' ) var=$vv ; vfl='Eta' ;;
+ 'Et2') var='ETANSQ' ; vfl=$vv ;;
+ 'ETANSQ' ) var=$vv ; vfl='Et2' ;;
+ 'T') var='THETA' ; vfl=$vv ;;
+ 'THETA' ) var=$vv ; vfl='T' ;;
+ 'S') var='SALT' ; vfl=$vv ;;
+ 'SALT' ) var=$vv ; vfl='S' ;;
+ 'U') var='UVEL' ; vfl=$vv ;;
+ 'UVEL' ) var=$vv ; vfl='U' ;;
+ 'V') var='VVEL' ; vfl=$vv ;;
+ 'VVEL' ) var=$vv ; vfl='V' ;;
+ 'W') var='WVEL' ; vfl=$vv ;;
+ 'WVEL' ) var=$vv ; vfl='W' ;;
+ 'Phi') var='PHIHYD' ; vfl=$vv ;;
+ 'PHIHYD' ) var=$vv ; vfl='Phi' ;;
+ 'U2') var='UVELSQ' ; vfl=$vv ;;
+ 'UVELSQ' ) var=$vv ; vfl='U2' ;;
+ 'V2') var='VVELSQ' ; vfl=$vv ;;
+ 'VVELSQ' ) var=$vv ; vfl='V2' ;;
+ *) var=$vv ; vfl=$vv ;;
esac
#echo 'grep -m 1' "^ field : ${var} " $inpFil
#grep -m 1 "^ field : ${var} " $inpFil
@@ -43,8 +75,40 @@
then
echo 'WARNING variable:' $var 'not found in file' $inpFil
else
- echo 'extract variable:' $var ', outFil=' $outFil
#echo 'nLev=' $nLev
+#- first variable: extract Header, then Iter Numbers:
+ if test $flag = 1
+ then flag=0
+ outFil=${prfx}'_head'.$sufx
+ nLin=`sed -n "/^# end of header/=" $inpFil`
+ head -$nLin $inpFil > $tmpFil
+ if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
+ if test -f $outFil
+ then
+ diff $tmpFil $outFil > /dev/null
+ out=$?
+ if test $out != '0'
+ then
+ echo 'WARNNING : get Different header file:' $outFil
+ cat $tmpFil >> $outFil
+ fi
+ rm -f $tmpFil
+ else mv $tmpFil $outFil
+ if test $mut = 0 ; then echo 'extract Header (' $nLin 'lines ) ==> ' $outFil ; fi
+ fi
+#----
+ outFil=${prfx}'_Iter'.$sufx
+ if test $mut = 0 ; then echo 'extract Iteration Nb ==> outFil=' $outFil ; fi
+ if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
+ touch $outFil
+ rList=`sed -n '/^# Regions /s/# Regions ://p' $inpFil`
+ for j in $rList ; do jj=$j ; done
+ grep "^ field : ${var} " $inpFil | grep "$j ; nb.Lev =" | \
+ sed 's/.*Iter =//' | sed 's/; region.*//g' >> $outFil
+ fi
+#----
+ outFil=${prfx}'_'$vfl.$sufx
+ if test $mut = 0 ; then echo 'extract variable:' $var ', outFil=' $outFil ; fi
#- echo set of sed instruction to file sedFil :
sedFil=$tmpFil.$vv
rm -f $sedFil
@@ -59,8 +123,10 @@
echo "}" >> $sedFil
#- extract records of variable "var" using sed command & sedFil
sed -n -f $sedFil $inpFil > $tmpFil
- head -1 $tmpFil
- sed '/^ k /d' $tmpFil | sed '/^ field /d' > $outFil
+ if test $mut = 0 ; then head -1 $tmpFil ; fi
+ if test -f $outFil -a $add = 0 ; then rm -f $outFil ; fi
+ touch $outFil
+ sed '/^ k /d' $tmpFil | sed '/^ field /d' >> $outFil
rm -f $sedFil $tmpFil
fi
done
| ViewVC Help | |
| Powered by ViewVC 1.1.22 |