Hi,
i want to generate print statement using awk.
i have 20+ and 30+ fields in each line
Now its priting only first eight fields print statement as output not all.
my record is as shown below filename
TFP_DNS,saidata.US_TFP_DNS_1,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10,RAG11
TFP_DNS,saidata.PS_TFP_DNS_1_HOUR,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10
TFP_DNS,saidata.PS_TFP_DNS_1_DAY,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,
TFP_DNS,saidata.PS_TFP_DNS_1_WEEK,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,
TFP_DNS,saidata.PS_TFP_DNS_1_MONTH,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10,RAG11,RAG12,RAG13,RAG14
my awk calling in script is
awk -F"," -v var=$sql_dir -f do.agg.out fiiename.csv
and awk file do.agg.out looks like
/US_/ {
print "spool /opt/nsn/robot/spool/Actual_RAW_JOB.txt; " > ""var"/RAW-Data-out.sql"
for( i = 2; i <=NF; i++ )
{
print " select count(*), "$i" FROM "$1" where "$i" in (select distinct "$i" from "$1") group by "$i" order by "$i" asc; \n" >> ""var"/RAW-Data-out.sql"
}
print " select count(*) from "$1";\n" >> ""var"/RAW-Data-out.sql"
print " spool off; \n exit; " >> ""var"/RAW-Data-out.sql"
}
its working fine but its displaying only 8 records (print statement) in for loop instead of number of fields ??
let me know anything wrong i am doing ?
Thanks,
Raghavendra