Unix Awk Saved My Life!

by Marshall on November 15, 2004

Well not really… So I was presented with a very tedious task today. Convert a bunch of database schema files into an xml format which I created. The XML file will then be used to help read in the data from a fixed length file into a C# app which will then import certain columns and records into a SQL database for further processing. The schema file looks something like this:

...
0Q  ARPP019B-STAFF-ID VAL Q(06).
...

I do not know what the first column stands for and I do not really care. The only columns I need are the second one which describes the column namd and part of the forth column which gives me the fixed length of the column. Now I could have written a parser for this format myself, but I am lazy. Plus, unix has the awk command. I fired up my favorite Unix-On-Windows shell, Cygwin and typed in the following line:

 awk '{ print $2 " " substr($4,3,2) }' schema.txt

and I got a nice list of column names and lengths as an output. Now what I really want is to output the XML nodes directly from the schema file. I can now do something like this:

 awk '{ print "<field len="\" substr($4,3,2) "\">" $2 "</field>"  }' comp.txt

and I will get the output

...
<field len="06">ARPP019B-STAFF-ID </field>
...

This will save me a lot of time writing these XML files as some of the schema files have upwards of 100 columns in them.

Leave your comment

Required.

Required. Not published.

If you have one.