我是awk新手,我正在尝试解析/透视出SAS或Excel使用的JIL

我是awk新手,我正在尝试解析/透视出SAS或Excel使用的JIL,awk,sas,autosys,jil,Awk,Sas,Autosys,Jil,我正在尝试解析我负责管理的所有300多个Autosys作业,并希望能够解析一个大型的300多个Autosys作业JIL文件,以自动化一些报告 我在允许使用的软件方面受到严格限制。我最近发现了这个awk脚本。我尝试了SAS解决方案,但只得到了1/2的数据。Perl脚本可以工作,但我不太精通Perl。Awk对我来说似乎更容易理解和利用 awk -F ' *[[:alnum:]_]*: *' 'BEGIN {h="insert_job;box_name;machine;command;

我正在尝试解析我负责管理的所有300多个Autosys作业,并希望能够解析一个大型的300多个Autosys作业JIL文件,以自动化一些报告

我在允许使用的软件方面受到严格限制。我最近发现了这个awk脚本。我尝试了SAS解决方案,但只得到了1/2的数据。Perl脚本可以工作,但我不太精通Perl。Awk对我来说似乎更容易理解和利用

awk -F ' *[[:alnum:]_]*: *' 'BEGIN         {h="insert_job;box_name;machine;command;owner;permission;date_conditions;days_of_week;run_calendar;start_times;condition;description;std_out_file;std_err_file;alarm_if_fail;profile;priority;alarm_if_terminated;timezone;group;application;resources;"; print h; n=split(h,F,/;/)}
                             function pr() {if(F[1] in A) {for(i=1;i<=n;i++)printf "%s%s",A[F[i]],(i<n)?";":RS}}
                             /insert_job/  {pr(); delete A}
                                           {for(i in F){if($0~"^"F[i])A[F[i]]=$2}}
                             END           {pr()}' /foo/bar/all.jil > /foo/bar/outfile2.txt
样本输出

insert_job;box_name;machine;command;owner;permission;date_conditions;days_of_week;run_calendar;start_times;condition;description;std_out_file;std_err_file;alarm_if_fail;profile;priority;alarm_if_terminated;timezone;group;application;resources;
somejob;;someserver.com;SAS ${AUTO_ROOT}/pgms/somejob.sas;user1;gx,wx;1;;1st_bus_dom;"07:00";s(someotherjob);"Send email notification.";"${AUTO_JOB_LOG}.out";"${AUTO_JOB_LOG}.err";1;"/foo/bar/etc/app1";;1;CST6CDT;grp1;app1;(someresource,QUANTITY=2,FREE=A);
somejob2;;someserver.com;SAS ${AUTO_ROOT}/pgms/somejob2.sas;user1;gx,wx;1;;1st_bus_dom;"07:00";s(someotherjob);"Send email notification.";"${AUTO_JOB_LOG}.out";"${AUTO_JOB_LOG}.err";1;"/foo/bar/etc/app1";;1;CST6CDT;grp1;app1;(someresource,QUANTITY=2,FREE=A);
我想弄清楚为什么启动时间没有正确解析到outfile2.txt中。我只收到了那一行的第一句话

编辑:看起来printf的RegExpression部分没有读取和打印数字字符。我现在不确定如何解决这个问题

编辑2:看起来这个问题涉及到“开始时间”的内容。我一直在努力温习如何解决这个问题,但我没有运气。 Current output只添加了第一个“we it should output the start_times的整行:”07:00“

我使用的当前awk返回如下内容:

somejob;;;;user1;gx,wx;1;;1st_bus_dom;";;
我想要这个

somejob;;;;user1;gx,wx;1;;1st_bus_dom;"7:00";;

我添加了样本输出,样本输入已经提供了,我仍然需要一些帮助来解决这个dliemna。
somejob;;;;user1;gx,wx;1;;1st_bus_dom;"7:00";;