Subversion Repositories lagranto.um

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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