Thread: AWK script

AWK script

From
Atif Jung
Date:
I've been tasked with writing a script which will automatically update our exisitng INFORMIX code to include POSTGRES compliant equivalent code. My awk skills are pretty basic to say the least, but  I've managed to write some of the rules in an awk script, but am having difficulty with the following 
 
 
CHANGE INFORMIX CODE
 
ORDER BY var[x,y];
 
TO POSTGRES CODE
 
ORDER BY SUBSTRING(var FROM x FOR y);
 
my problem is var[x,y] is completely variable. How do I check for that in AWK/SED? Is it even possible?
 
Thanks
 

Re: AWK script

From
Atif Jung
Date:
Sorry Glenn, I should have made it clear, when I said 'var[x,y]' is completely variable I meant the whole string, so it could look like:
 
var[x,y]
:h_def[x,y]
hello[x,y]
 
and so on ....
 
I've managed to do the match ok using
 
/ORDER BY [A-za-z0-9_:]*\[[0-9]*,[0-9]*\]/
 
this seems to work, but I'm still working on what I would write for the second parameter for the gsub function.
 
Thanks
Atif



On 13 April 2010 15:02, glenn <glenn@davy.net.au> wrote:
Hi Atif
from one  non expert to another, does this help:

glenn@baldur:~$ cat x
ORDER BY var[x,y]
ORDER BY var[2,5]
ORDER BY var[Z,Q]
ORDER BY var[ABC,DEF]

glenn@baldur:~$ sed 's/ORDER\ BY\ var\[\(.*\),\(.*\)\]/ORDER\ BY\
SUBSTRING(var\ FROM\ \1\ FOR\ \2\)/' x
ORDER BY SUBSTRING(var FROM x FOR y)
ORDER BY SUBSTRING(var FROM 2 FOR 5)
ORDER BY SUBSTRING(var FROM Z FOR Q)
ORDER BY SUBSTRING(var FROM ABC FOR DEF)

So, tahts with sed, haven't tried awk yet. let you know if I come up
with something.


On Tue, 2010-04-13 at 14:30 +0100, Atif Jung wrote:
> I've been tasked with writing a script which will automatically update
> our exisitng INFORMIX code to include POSTGRES compliant equivalent
> code. My awk skills are pretty basic to say the least, but  I've
> managed to write some of the rules in an awk script, but am having
> difficulty with the following
>
>
> CHANGE INFORMIX CODE
>
> ORDER BY var[x,y];
>
> TO POSTGRES CODE
>
> ORDER BY SUBSTRING(var FROM x FOR y);
>
> my problem is var[x,y] is completely variable. How do I check for that
> in AWK/SED? Is it even possible?
>
> Thanks
>
>
>



Re: AWK script

From
glenn
Date:
Hi Atif
from one  non expert to another, does this help:

glenn@baldur:~$ cat x
ORDER BY var[x,y]
ORDER BY var[2,5]
ORDER BY var[Z,Q]
ORDER BY var[ABC,DEF]

glenn@baldur:~$ sed 's/ORDER\ BY\ var\[\(.*\),\(.*\)\]/ORDER\ BY\
SUBSTRING(var\ FROM\ \1\ FOR\ \2\)/' x
ORDER BY SUBSTRING(var FROM x FOR y)
ORDER BY SUBSTRING(var FROM 2 FOR 5)
ORDER BY SUBSTRING(var FROM Z FOR Q)
ORDER BY SUBSTRING(var FROM ABC FOR DEF)

So, tahts with sed, haven't tried awk yet. let you know if I come up
with something.


On Tue, 2010-04-13 at 14:30 +0100, Atif Jung wrote:
> I've been tasked with writing a script which will automatically update
> our exisitng INFORMIX code to include POSTGRES compliant equivalent
> code. My awk skills are pretty basic to say the least, but  I've
> managed to write some of the rules in an awk script, but am having
> difficulty with the following
>
>
> CHANGE INFORMIX CODE
>
> ORDER BY var[x,y];
>
> TO POSTGRES CODE
>
> ORDER BY SUBSTRING(var FROM x FOR y);
>
> my problem is var[x,y] is completely variable. How do I check for that
> in AWK/SED? Is it even possible?
>
> Thanks
>
>
>



Re: AWK script

From
Andrej
Date:
On 14 April 2010 02:41, Atif Jung <atifjung@gmail.com> wrote:
> Sorry Glenn, I should have made it clear, when I said 'var[x,y]' is
> completely variable I meant the whole string, so it could look like:
>
> var[x,y]
> :h_def[x,y]
> hello[x,y]
>
> and so on ....

echo "var[x,y]
:h_def[x,y]
hello[x,y]" | sed -r 's|^([^[]+)\[([^,]+),([^]]+)\]|\1 FROM \2 FOR \3|'
var FROM x FOR y
:h_def FROM x FOR y
hello FROM x FOR y

Does that help?



Cheers,
Andrej


--
Please don't top post, and don't use HTML e-Mail :}  Make your quotes concise.

http://www.american.edu/econ/notes/htmlmail.htm