Seb wrote:
> Hi,
>
> I have several tens of files containing SQL code with lines of the form:
>
> INSERT INTO tablex (var1, var2, var3, var4, var5) VALUES (1,'03/20/08
00:00:00','AM',4,NULL,'some text',NULL);
>
> The time stamp string may consist of both date and time, or only date,
> but the date is always MM/DD/YY. I'd like to reformat the date as
> YYYY-MM-DD, so the date in the example above should be "2008-03-20".
> There are 2 issues I'm struggling with: 1) years may be in the 20th or
> 21st century, so that every year starting with 0 should belong in the
> current century, and the rest in the previous, and 2) time stamps may be
> present in more than one variable (i.e. the var's above). gensub()
> seemed the way to go:
>
> awk --re-interval '{
> sub(/ end,/, " ending,")
> if ($0 ~ /[[:digit:]]{2}\/[[:digit:]]{2}\/[[:digit:]]{2}/) {
>
$0=gensub(/([[:digit:]]{2})\/([[:digit:]]{2})\/([[:digit:]]{2})/,
> "\\3/\\2/\\1", "g")
> }
> print
> }'
>
> This of course only rearranges the date pieces, but doesn't add the
> century information. The sub() is just to show that other operations
> are needed before printing every line. Any suggestions on how to
> proceed in this case?
You can write two gensub()s, where you replace the third [[:digit:]]{2}
subpattern by 0[[:digit:]] and [1-9][[:digit:]], resp., and add the
respective century information before the replacement \\3.
Janis
>
> Cheers,
>


|