| 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 |