awk - Parsing Autosys JIL


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - Parsing Autosys JIL
# 1  
Old 02-12-2013
awk - Parsing Autosys JIL

I'm trying to modify the script given in post 7 of the following thread: 146564-need-parse-jil-file-into-excel-file.html. (Sorry, can't post the URL as I don't have enough posts.)

The original script is as follows:
Code:
awk -F ' *[[:alnum:]_]*: *' 'BEGIN         {h="insert_job;box_name;command;owner;permission;condition;description;std_out_file;std_err_file;alarm_if_fail"; 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()}' infile

The modifications I'm trying to make involve returning any potential token. Everything so far seems to be working except when I try to retrieve the job_type. I'm pretty sure this is because it's on the same line as the insert_job, but it's been so long since I've worked with Awk, I'm not clear on how to fix it.

Example:
Code:
/* ----------------- backupJIL ----------------- */

insert_job: backupJIL job_type: c
command: autorep -J ALL -q > /home/autosys/...p/autosys_jil_bk
machine: machine
owner: autosys@machine
permission: gx,ge,wx,we
date_conditions: 1
days_of_week: tu,we,th,fr,sa
start_times: "17:00"
description: "Daily backup of job definitions"
std_out_file: /tmp/autosys_jil_backup.out
std_err_file: /tmp/autosys_jil_backup.err
alarm_if_fail: 1

Could someone please help?

Thanks!
GnuScripter
# 2  
Old 02-12-2013
The script that you have assumes that you are trying to create a semicolon separated values line of output for each group of input lines that have insert_job: in the first line of the group and that the output you want contains values found in fields named: insert_job, box_name, command, owner, permission, condition, description, std_out_file, std_err_file, and alarm_if_fail. It also assumes that there is no more than one field per input line.

Besides not looking for more than one field per line, it does not look for job_type, machine, date_conditions, days_of_week, or start_times.

Do you still want a semicolon separated values file?

Do you know what fields you want to appear in your output file?

Do you need a program that will search for all of the field names that appear in your input file(s) and then produce a semicolon separated output file with a heading line showing every field found and then print a line for each input record found? If that is what you want, how is the program supposed to determine record boundaries?

What type of system are you using?

What is the value of {LINE_MAX} on your system? (I.e., what is the output from the command: getconf LINE_MAX?)

How big is (are) your input file(s)?
# 3  
Old 02-12-2013
I've got everything working the way I need except getting it to pick up the job_type which is on the same line as the insert_job.

Line_max is 2048.

Right now I'm just using a single box.

System is Linux.

Thanks!
# 4  
Old 02-12-2013
Quote:
Originally Posted by GnuScripter
I've got everything working the way I need except getting it to pick up the job_type which is on the same line as the insert_job.

Line_max is 2048.

Right now I'm just using a single box.

System is Linux.

Thanks!
You didn't answer most of my questions. But, if you have something that is almost working, please post it! Maybe we can help you refine it to do what you want.
# 5  
Old 02-12-2013
If you can make the script I posted work the way it is, but have it pick up the job_type, that would be all I need for now.

Thanks!
# 6  
Old 02-12-2013
Quote:
Originally Posted by GnuScripter
If you can make the script I posted work the way it is, but have it pick up the job_type, that would be all I need for now.

Thanks!
A trivial way to make it work is to change your script as follows:
Code:
sed 's/ \(job_type:\)/\
\1/' infile | awk -F ' *[[:alnum:]_]*: *' 'BEGIN         {h="insert_job;box_name;command;owner;permission;condition;description;std_out_file;std_err_file;alarm_if_fail;job_type"; 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()}' infile

Adding the code marked in blue in two places to your script and deleting the filename in red from your script. (Note that a newline character must immediately follow the backslash character (\) at the end of the first line; adding any spaces or tabs at this point will keep this script from working.)
This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 02-12-2013
Works as expected. Thanks!

One more question. How do I get it to process each job in the file? Currently, it's only doing the first one.

A new record could be identified with each insert_job it finds.

Thank you!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Autosys adding global variable in a jil

I have created two jil files name AY.jil and PY.jil. I have three issues which are as follows: 1. how do you add a global variable value from a shell script program to a jil file? 2. PY.jil needs to check every five minutes on the completion of the AY.jil jobs and AY.jil needs to... (1 Reply)
Discussion started by: dellanicholson
1 Replies

2. UNIX for Beginners Questions & Answers

Add global variable to jil autosys

I am new to autosys. I want to add a global variable to a jil file named PJ.jil. I also want to add a watch_file command to filename PJ.jil and AY.jil. The watch_file command checks every five minutes if the jobs have completed. For example. AY.jil needs to wait until all the jobs in PJ.jil have... (0 Replies)
Discussion started by: dellanicholson
0 Replies

3. Shell Programming and Scripting

awk output yields error: awk:can't open job_name (Autosys)

Good evening, Im newbie at unix specially with awk From an scheduler program called Autosys i want to extract some data reading an inputfile that comprises jobs names, then formating the output to columns for example 1. This is the inputfile: $ more MapaRep.txt ds_extra_nikira_usuarios... (18 Replies)
Discussion started by: alexcol
18 Replies

4. Shell Programming and Scripting

awk to parse jil output

Hi , I have a jil file which i am trying to parse and print the job name and the condition corresponding to it. Below is the input file /* -------------------- testjob1 -------------------- */ insert_job: testjob1 job_type: c machine: unix owner: chidori condition: s(joba) and... (9 Replies)
Discussion started by: chidori
9 Replies

5. Shell Programming and Scripting

Using awk with autosys autorep

Hi, How to get correct field/column from autosys autorep command. I'm using GNU/Linux I'm trying to get the difference of last end and last start and the status (ST). In awk, i get the following excluding the heading part $1 - jobname $2 - Last Start date $3 - Last Start time $4 - Last... (1 Reply)
Discussion started by: bobbygsk
1 Replies

6. UNIX for Dummies Questions & Answers

Autosys: How to change a machine name in Autosys JIL.

All the autosys jobs are on server-1 and server-1 has been crashed due to some reason, Now I have to run 5 autosys jobs on server-2 (failover server) which are on server 1. How to do with Autosys command (which command needs to fired on JIL) (0 Replies)
Discussion started by: tp2115
0 Replies

7. UNIX for Advanced & Expert Users

Formating and Parsing Autosys output

if you want to parse the output from an autosys you can use the below autorep -j Prefix_% | awk '{ if ($6 ~ /^/) printf "%-20s \t\t %-20s\n",$1,$5 ; else if ($6 ~ /^/) printf "%-20s \t\t %-20s\n",$1,$6; else printf "%-20s \t\t %-20s\n",$1,$4 }' | awk '{ if ($2... (1 Reply)
Discussion started by: phpsnook
1 Replies

8. UNIX for Advanced & Expert Users

Autosys: Check the jil load time

Hi All, I wanted to know what time the box jobs were loaded into a particular Autosys Instance. Is there a autosys command to find out the above? (The timestamp at which a box was loaded) I had loaded my JIL script without outputting it to the log file. (4 Replies)
Discussion started by: grep_me
4 Replies

9. UNIX for Advanced & Expert Users

Autosys JIL script for logging

Hi I'm very new to this Autosys JIL scripts. Now I need to create an Command to copy the file from one folder to another by watching that folder. I have written & create that job but i don't no how to add logging in JIL script. Before moving the file i have to log the file details in a separte... (0 Replies)
Discussion started by: vijayvz
0 Replies

10. UNIX for Advanced & Expert Users

Documentation and books on Autosys Job Control Tool from Autosys

My project uses Autosys. I am new to this product and I don't know where to start from. Q1. Please provide me the link where I can get Autosys documentation Q2. Please refer a good book on Autosys. (Beginner/Intermediate Level) (0 Replies)
Discussion started by: gram77
0 Replies
Login or Register to Ask a Question