É realmente uma dor de cabeça para mim de algumas horas que estou lutando com o problema. Também perguntei no estouro de pilha, mas ainda não obtive nenhuma resposta, por isso estou perguntando aqui.
Estou executando um comando no shell do Linux.
mysql -uroot -proot -Bse "select Concat('SHOW CREATE TABLE ',TABLE_SCHEMA ,'.',TABLE_NAME,'\\G') from information_schema.tables where TABLE_SCHEMA Not IN('mysql','information_schema','performance_schema');"
Eu quero saída como
SHOW CREATE TABLE sakila.category\G
SHOW CREATE TABLE sakila.city\G
SHOW CREATE TABLE sakila.country\G
SHOW CREATE TABLE sakila.customer\G
Mas estou ficando como
SHOW CREATE TABLE sakila.categoryG
SHOW CREATE TABLE sakila.cityG
SHOW CREATE TABLE sakila.countryG
SHOW CREATE TABLE sakila.customerG
Por que é assim..?
Isso sempre foi uma verdadeira dor de cabeça para mim.
\\G
como\G
\G
comoG
Infelizmente, essa é a sequência que sempre acontece.
Eu uso o comando sed para contornar isso da seguinte maneira:
Observe que substituí
\\G
porG
(em branco seguido porG
)Eu tenho o comando sed translate
G$
(que significa o G maiúsculo em branco no final da linha) e o converto em\G
. Observe que o sed está fazendo essa conversão com a saída do sistema operacional e a saída do mysql.Você não precisa mais lidar com esse
\G
problema. Simplesmente planeje que um G maiúsculo em branco seja convertido por sed para\G
.