Subversion Repositories lagranto.um

Rev

Rev 3 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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