The following sql code will be inserted in a text file, as the input to the input.txt:
insert into t_agg_sgsn_gprs_usage select served_imsi as imsi, served_msisdn as msisdn, NVL(cell_identity,'-1') as cell_id, NVL(trim(to_char(location_area_code,'99999999')),'UNKNOWN'), substr(served_imei,1,8) tac_code, to_char(to_timestamp(record_opening_time,'YYYYMMDDHH24MISS'),'YYYYMMDD') as call_dt, 'ajay' as loaded_dt, count(1) as cdr_count, sum(data_volume_uplink) as uploaded_data_volume, sum(data_volume_downlink) as downloaded_data_volume, case when substr(imsi,6,2)='65' then substr(imsi,1,9) else substr(imsi,1,5) end imsi_prefix from t_cdrc_sgsn_pdp_18 where loaded_dt LIKE 'ajay%' AND trim(served_imsi) != '' AND trim(served_msisdn) != '' AND trim(served_imei) != '' group by imsi, msisdn, tac_code, cell_id, location_area_code, call_dt; I'm writing a unix script which should give the output with the date incremented by 1, and appended to one sql file(changer.sql), till the specified date.
insert into t_agg_sgsn_gprs_usage select served_imsi as imsi, served_msisdn as msisdn, NVL(cell_identity,'-1') as cell_id, NVL(trim(to_char(location_area_code,'99999999')),'UNKNOWN'), substr(served_imei,1,8) tac_code, to_char(to_timestamp(record_opening_time,'YYYYMMDDHH24MISS'),'YYYYMMDD') as call_dt, '2012-10-17' as loaded_dt, count(1) as cdr_count, sum(data_volume_uplink) as uploaded_data_volume, sum(data_volume_downlink) as downloaded_data_volume, case when substr(imsi,6,2)='65' then substr(imsi,1,9) else substr(imsi,1,5) end imsi_prefix from t_cdrc_sgsn_pdp_18 where loaded_dt LIKE '2012-10-17%' AND trim(served_imsi) != '' AND trim(served_msisdn) != '' AND trim(served_imei) != '' group by imsi, msisdn, tac_code, cell_id, location_area_code, call_dt; insert into t_agg_sgsn_gprs_usage select served_imsi as imsi, served_msisdn as msisdn, NVL(cell_identity,'-1') as cell_id, NVL(trim(to_char(location_area_code,'99999999')),'UNKNOWN'), substr(served_imei,1,8) tac_code, to_char(to_timestamp(record_opening_time,'YYYYMMDDHH24MISS'),'YYYYMMDD') as call_dt, '2012-10-18' as loaded_dt, count(1) as cdr_count, sum(data_volume_uplink) as uploaded_data_volume, sum(data_volume_downlink) as downloaded_data_volume, case when substr(imsi,6,2)='65' then substr(imsi,1,9) else substr(imsi,1,5) end imsi_prefix from t_cdrc_sgsn_pdp_18 where loaded_dt LIKE '2012-10-18%' AND trim(served_imsi) != '' AND trim(served_msisdn) != '' AND trim(served_imei) != '' group by imsi, msisdn, tac_code, cell_id, location_area_code, call_dt; And keep on incrementing and appending into the changer.sql file, till the specified enddate.
Below is what I have so far, but that is still no producing the expected result:
startdate = `date +"%y-%m-%d"` set startdate = 2012-10-17 enddate = `date “+%y-%m-%d` set enddate = 2012-12-22 for($startdate <= $enddate) do for file in $(grep -il "ajay" input.txt) do sed -e "s/ajay/$startdate/ig" $file >> changer.sql done $startdate --startdate="-1 days ago" done
$startdate --startdate="-1 days ago"??? Is that leading$char a typo, or meant to indicate the cmd-line prompt? Else seems suspect. Also this seems overly complex AND it's a pain for those of us who didn't write this code to understand the goal. Can you refactor this into a minimal case that will easier for all to understand. 3. Finally, this looks like csh code. If yes, please tag as such. Good luck!