Subversion Repositories lagranto.um

Rev

Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 michaesp 1
#!/bin/csh
2
 
15 michaesp 3
# Set Lagranto 
4
set LAGRANTO = ${LAGRANTOBASE}.${MODEL}/
5
 
3 michaesp 6
# Write usage information
7
if ( ${#argv} == 0) then
8
  echo 
9
  echo "--------------------------------------------------------------"
10
  echo "Usage: datelist.sh filename mode [parameters]"
11
  echo 
12
  echo "         filename : Name of the date file"
13
  echo "         mode     : Mode"
14
  echo 
15
  echo "             -create startdate enddate : create a date list"
16
  echo "             -interval hour            : interval in hours"
17
  echo "             -first                    : first date"
18
  echo "             -last                     : last date"
19
  echo "             -ndates                   : number if dates"
20
  echo "             -timerange                : time range in hours"
21
  echo "             -indir                    : all dates in a directory"
22
  echo "             -next date                : get the next date after {date}"
23
  echo "             -prev date                : get the previous date before {date}"
24
  echo "             -isin date                : check whether date is in list"
25
  echo "             -overlap file1 file2      : overlap of two date lists"
26
  echo "             -onlyin1 file1 file2      : dates which are only in file1"
27
  echo "             -onlyin2 file1 file2      : dates which are only in file2"
28
  echo 
29
  echo "--------------------------------------------------------------"
30
  exit 0
31
endif
32
 
33
# Handle fixed arguments
34
set filename = $1
35
set mode     = $2
36
 
37
# Redirect output to screen if requested
38
if ( "${filename}" == "stdout" ) set filename="/dev/stdout"
39
if ( "${filename}" == "screen" ) set filename="/dev/stdout"
40
 
41
# Handle optional arguments
42
set interval = "6"
43
 
44
while ( $#argv > 0 )
45
 
46
  switch ( $argv[1] )
47
 
48
   case -create
49
     set startdate = $argv[2] 
50
     set finaldate = $argv[3] 
51
     shift;
52
     shift;
53
   breaksw
54
 
55
   case -indir
56
     set dirname = $argv[2] 
57
     shift;
58
   breaksw
59
 
60
   case -next
61
     set date = $argv[2] 
62
     shift;
63
   breaksw
64
 
65
   case -prev
66
     set date = $argv[2] 
67
     shift;
68
   breaksw
69
 
70
   case -isin
71
     set date = $argv[2] 
72
     shift;
73
   breaksw
74
 
75
   case -interval
76
     set interval = $argv[2] 
77
     shift;
78
   breaksw
79
 
80
   case -overlap
81
     set file1 = $argv[2] 
82
     set file2 = $argv[3] 
83
     shift;
84
     shift;
85
   breaksw
86
 
87
   case -onlyin1
88
     set file1 = $argv[2] 
89
     set file2 = $argv[3] 
90
     shift;
91
     shift;
92
   breaksw
93
 
94
   case -onlyin2
95
     set file1 = $argv[2] 
96
     set file2 = $argv[3] 
97
     shift;
98
     shift;
99
   breaksw
100
 
101
 
102
  endsw
103
 
104
  shift;
105
 
106
end
107
 
108
# Mode: -create startdate finaldate
109
if ( "${mode}" == "-create" ) then
110
 
111
   \rm -f datelist.param
112
   echo \"${filename}\"    >  datelist.param
113
   echo \"${mode}\"        >> datelist.param
114
   echo \"${startdate}00\" >> datelist.param
115
   echo \"${finaldate}00\" >> datelist.param
116
   echo ${interval}        >> datelist.param
117
 
118
   ${LAGRANTO}/goodies/datelist
119
 
120
endif
121
 
122
# Mode: -first 
123
if ( "${mode}" == "-first" ) then
124
 
125
   head -1 ${filename} 
126
 
127
endif
128
 
129
# Mode: -last 
130
if ( "${mode}" == "-last" ) then
131
 
132
   tail -1 ${filename} 
133
 
134
endif
135
 
136
# Mode: -ndates 
137
if ( "${mode}" == "-ndates" ) then
138
 
139
   wc -l ${filename} | awk '{ print $1}'
140
 
141
endif
142
 
143
# Mode: -timerange 
144
if ( "${mode}" == "-timerange" ) then
145
 
146
   set firstdate = `head -1 ${filename}`
147
   set finaldate = `tail -1 ${filename}`  
148
 
149
   ${LAGRANTO}/goodies/gettidiff ${finaldate} ${firstdate}
150
 
151
endif
152
 
153
# Mode: -indir {directory name}
154
if ( "${mode}" == "-indir" ) then
155
 
156
    ls -1 ${dirname} | perl -ne 'print  if s/.*([0-9]{8}_[0-9]{2}).*/\1/' | sort | uniq >! ${filename}
157
 
158
endif
159
 
160
# Mode: -next
161
if ( "${mode}" == "-next" ) then
162
 
163
  set last = `tail -1 ${filename}` 
164
  if ( "${date}" != "${last}" ) then
165
     set next = `sed -n "/${date}/{n;p;}" ${filename}`
166
     echo ${next}
167
  else
168
     echo "nil"
169
  endif
170
 
171
endif
172
 
173
# Mode: -prev
174
if ( "${mode}" == "-prev" ) then
175
 
176
  set first = `head -1 ${filename}` 
177
  if ( "${date}" != "${first}" ) then
178
     set prev = `sed -n "/${date}/{g;p;};h" ${filename}`
179
     echo ${prev}
180
  else
181
     echo "nil"
182
  endif
183
 
184
endif 
185
 
186
# Mode: -isin
187
if ( "${mode}" == "-isin" ) then
188
 
189
  set flag = `sed -n "/${date}/p" ${filename}`
190
 
191
  if ( "${flag}" != "" ) then
192
    echo "1"
193
  else
194
    echo "0"
195
  endif
196
 
197
endif 
198
 
199
# Mode: -overlap
200
if ( "${mode}" == "-overlap" ) then
201
    if ( "${filename}" != "/dev/stdout" ) then 
202
       set outfile = ${filename}.$$
203
       \rm -f ${outfile}
204
       grep -f ${file1} ${file2} > ${outfile}
205
       \mv ${outfile} ${filename}
206
    else
207
       grep -f ${file1} ${file2}
208
    endif
209
endif
210
 
211
# Mode: -onlyin1
212
if ( "${mode}" == "-onlyin1" ) then
213
    set outfile1 = "tmp1.$$"
214
    set outfile2 = "tmp2.$$"
215
    \rm -f ${outfile1}
216
    \rm -f ${outfile2}
217
    grep -f  ${file1}    ${file2} >! ${outfile1}
218
    grep -vf ${outfile1} ${file1} >! ${outfile2}
219
    if ( "${filename}" != "/dev/stdout" ) then
220
      \mv ${outfile2} ${filename}
221
    else
222
      cat  ${outfile2}
223
    endif
224
    \rm -f ${outfile1}
225
    \rm -f ${outfile2}
226
endif
227
 
228
# Mode: -onlyin2
229
if ( "${mode}" == "-onlyin2" ) then
230
    set outfile1 = "tmp1.$$"
231
    set outfile2 = "tmp2.$$"
232
    \rm -f ${outfile1}
233
    \rm -f ${outfile2}
234
    grep -f  ${file2}    ${file1} >! ${outfile1}
235
    grep -vf ${outfile1} ${file2} >! ${outfile2}
236
    if ( "${filename}" != "/dev/stdout" ) then
237
      \mv ${outfile2} ${filename}
238
    else
239
      cat  ${outfile2}
240
    endif
241
    \rm -f ${outfile1}
242
    \rm -f ${outfile2}
243
endif
244
 
245
 
246
exit 0
247