Estoy haciendo una migracion manual de un dumpeo de un esquema de MySQL hacia Oracle. (Se que puedo utilizar ETL gratuitos o Oracle Workbench) pero no es el caso, no hay servidor grafico y no puedo instalar muchas cosas raras en el PC que es.
Bien asi que la migracion que en este caso son sencillas (tablas nada de procedimientos, ni triggers ni funciones) he creado el siguiente script en bash que me serviria con una unica falla:
Código
#!/bin/bash -x mensaje="UNLOCK TABLES*"; mensajito="LOCK TABLES*"; archivo="/home/marian/pepe/backup.sql"; mensaje1="*"; mensaje2="*"; mensaje3="ENGINE*"; new="/home/marian/pepe/nuevo.txt"; fin="NULL "; curva=")"; indices="KEY"; tabla="DROP TABLE*" extra="``"; sed "/$mensaje/d" $archivo > nuevo.txt sed "/$mensajito/d" $new > tmp && mv tmp $new sed "/$mensaje1/d" $new > tmp && mv tmp $new sed "/$mensaje2/d" $new > tmp && mv tmp $new sed "/$tabla/d" $new > tmp && mv tmp $new sed "/$extra/d" $new > tmp && mv tmp $new sed "s/$indices/UNIQUE/" $new > tmp && mv tmp $new sed "/^$/d" $new > tmp && mv tmp $new sed -e "/$mensaje3/G" $new > tmp && mv tmp $new sed "/$mensaje3/d" $new > tmp && mv tmp $new sed "s/^$/$curva/" $new > tmp && mv tmp $new
Mi falla es en la variable $extra="`" como bien saben la comilla inclinada (`) sirve para ejecucion, y no encuentro forma de quitarla con SED en el archivo generado por mysqldump:
Código
bash-3.1$ cat nuevo.txt -- -- Host: localhost Database: primaria -- ------------------------------------------------------ -- Server version 5.4.3-beta -- -- Table structure for table `copia` -- CREATE TABLE `copia` ( `apellidos` char(20) DEFAULT NULL, UNIQUE `data` (`data`) ) -- -- Dumping data for table `copia` -- INSERT INTO `copia` VALUES (1,'Lopez'),(2,'Sanchez'),(2,'Sanz'),(5,'Heredia'),(4,'Mendeira'); --
Lo que la variable $extra en este caso me esta haciendo es eliminandome todas las lineas donde encuentre la dichosa comilla `valor` la linea completa y yo solo quiero que por ejemplo a:
CREATE TABLE `copia`
me lo deje como
CREATE TABLE copia
lo unico que quiero eliminar es la comillita simple inclinada no el valor dentro de la misma.
Alguien sabe como puedo hacer eso con el comando SED en Linux?