我正在尝试将MSSQL .sql文件转换为MYSQL语法文件。我已经设法使用基本的find / replace来改变一些语法,但是我还需要改变行中单词的顺序。基本上这些陈述是这样的:
ALTER TABLE ADD INDEX index_name ON table_name(column_name)
我想纠正这种格式的语句(MYSQL语法):
ALTER TABLE table_name ADD INDEX index_name(column_name)
在文件中有70种这样的语句。基本上,table_name必须从ON和(和放在TABLE和ADD之间)之间移位。是否可以使用sed / awk / grep?< / p>
答案 0 :(得分:3)
以下适用于您的示例输入的sed
:
sed 's/\(ADD INDEX\) \(.*\) ON \(.*\)(/\3 \1 \2(/'
答案 1 :(得分:0)
你也可以使用这个GNU sed命令,
sed -r 's/^(\w+\s\w+)(\s\w+\s\w+) (\w+) \w+ (\w+)(.*)$/\1 \4\2 \3\5/g' file
示例:
$ echo 'ALTER TABLE ADD INDEX index_name ON table_name(column_name)' | sed -r 's/^(\w+\s\w+)(\s\w+\s\w+) (\w+) \w+ (\w+)(.*)$/\1 \4\2 \3\5/'
ALTER TABLE table_name ADD INDEX index_name(column_name)