Thread: AWK script
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
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
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 xORDER 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\)/' xORDER 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
>
>
>
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 > > >
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