mysql - Linux SED AWK Sqlite 转储到 MySQL 将以 create table 开头的行上的字符串更改为 varchar

标签 mysql bash sqlite sed awk

我需要一个内联 sed 命令将“string”替换为“varchar(30)”,但是创建表语法可以位于多行。

有没有办法告诉 sed (或使用 awk?)在不以“INSERT INTO...”开头的行上进行替换?

“字符串”一词可能出现在我的数据中,我不希望数据损坏。

sed -i 's/string/varchar(30)/g'

我知道基本的正则表达式,但这超出了我的能力范围。谢谢!

最佳答案

sed -i '/^INSERT INTO/! s/string/varchar(30)/g'

来自sed man page :

After the address (or address-range), and before the command, a ! may be inserted, which specifies that the command shall only be executed if the address (or address-range) does not match.

关于mysql - Linux SED AWK Sqlite 转储到 MySQL 将以 create table 开头的行上的字符串更改为 varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22179335/

相关文章:

android - 将字符串数组从 SQLite 转换为整数数组

java - Android如何在数据库帮助器类之外将数据插入数据库

java - 存储结果集供以后获取

php - 将表单数据提交到mysql时出现 undefined variable 错误消息?

php - 我无法使用 json 在本地主机服务器中发布数据和图像

mysql - 将字符串与一个之前有空格而另一个没有空格的字符串进行比较

bash - 如何使用 awk 进行文本处理以剪切一行中的最后一个字段?

mysql - Bash 脚本用单引号和反斜杠替换单引号

linux - 编写一个 bash 脚本来检查进程是否在 x 秒内响应?

ios - SQLite 与 Plist 性能对比