答案1
尝试这个:
sed -E 's/();\s)(插入 )`(.*)` 值 (/),\n(/gm;t;d' <<< "插入table
值 (1,'something');
答案2
解决了!我使用了 -z 选项,它确实起到了作用,甚至使模式匹配更短。
带有 stdin 和 stdout 示例的 Shell 脚本可在IDE一,为了完整起见,下面提供了一份副本。
脚本
#!/bin/sh
sed -zE 's/\)\;\nINSERT INTO `(.*)` VALUES \(/),\n(/gm;'
注意:需要更高版本的 sed,已使用 4.7 进行测试,显然 -z 也适用于 4.2。
示例 stdin(来自 mysqldump --skip-extended-insert 的 .sql 转储)
INSERT INTO `table` VALUES (1,'something');
INSERT INTO `table` VALUES (2,'anything');
INSERT INTO `table` VALUES (3,'everything');
INSERT INTO `table` VALUES (4,'everything');
INSERT INTO `table` VALUES (5,'everything');
INSERT INTO `table` VALUES (6,'everything');
INSERT INTO `table` VALUES (7,'everything');
示例 stdout
.sql 转储已转换为多行 --extended-insert,尽管多年来多次请求,但目前 mysqldump 尚不支持
INSERT INTO `table` VALUES (1,'something'),
(2,'anything'),
(3,'everything'),
(4,'everything'),
(5,'everything'),
(6,'everything'),
(7,'everything');
希望这可以帮助。
亲切的问候,