2010-04-06 55 views
1

我需要一个UNIX shell脚本将我的查询从Java兼容转换为Oracle兼容格式。即。用于转换查询的UNIX脚本

我有所有的java兼容的查询:

的java:

SELECT a, b, c, d, e, f,g "+// "from test where year(timestamp)=year(today) and month(timestamp)=month(today) " 
+// "and day(timestamp)=2 and h='" + "W" + "'" 

甲骨文

选择A,B,C,d,E,F,G从测试,其中 年(时间戳)=年(今日)和 月(时间戳)=月(今天)和 日(时间戳)= 2和h ='W'

是否有可能使用sed或awk?

回答

1

首先,保留所有的文字在

单行您可以用一行Perl代码做到这一点:

perl -n -E 's/"[^"]+"//mg;s/"$//;print' java-sql.txt >oracle-sql.txt 

它也会删除尾部'''。 如果你没有一个文件,管道也在这里工作

you-code-print-java-sql-to-stdout.exe | perl -n -E 's/"[^"]+"//g;s/"$//;print' 

你会得到的Perl的标准输出的Oracle版本。

0
sed '/SELECT/s/"[^"]\+"//g' <FILE> 

也许会有帮助,但只有在查询已平衡“在同一线S例如,它失败了。

SELECT a, b, c, d, e, f,g "+//  
"from test where day(timestamp)=2 and h='" + "W" + "' 

HTH