mysql - 删除除特定表之外的所有表

标签 mysql regex grep sql-drop

我想删除除少数几个以外的所有表。我正在使用以下命令:

mysqldump -uroot -pxxx --add-drop-table --no-data database | grep ^DROP | grep -v "^(cache|webform|redirect)([_a-z0-9]?)+$" | mysql -uroot -pxxx database

根据这个 http://www.regexr.com/3aa8k,正则表达式似乎没问题,因为我想跳过的表是缓存*、网络表单*、重定向。但问题是它会丢弃所有内容。

最佳答案

你的正则表达式是

grep -v "^(cache|webform|redirect)([_a-z0-9]?)+$"

这是扩展格式(|+ 在旧的 grep regexp 中是不允许的)

试试这个吧

grep -Ev "^(cache|webform|redirect)([_a-z0-9]?)+$"

或者有可能转义元字符 ?, +, {, |, (, and ) 带反斜杠

关于mysql - 删除除特定表之外的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28192304/

相关文章:

php - 需要 Sql 查询对于给定的情况

mysql - GTID 复制错误

php - 警告 : mysqli_query(): Couldn't fetch mysqli

javascript - 将正则表达式从 JavaScript 移植到 PHP

regex - 字符前未转义的反斜杠的正确正则表达式是什么?

java - 如何更改以下模式以找到所有可能的匹配项?

linux - 如何在 %% 或 $$ 中间 grep/split 一个词

linux - 将 grep 结果放入变量中

regex - 使用grep查找具有连续相同字母的字符串

mysql - Node.js-mysql : Bad field Error