我试图解决这个问题:
KEY `vehicle_classification_id` (`vehicle_classification_id`),
CONSTRAINT `BodyStyle_VehicleClassification` FOREIGN KEY
(`vehicle_classification_id`) REFERENCES `vehicle_classifications` (`id`$
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
进入这个:
KEY `vehicle_classification_id` (`vehicle_classification_id`)
(`vehicle_classification_id`) REFERENCES `vehicle_classifications` (`id`$
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
此SED和GREP COMMAND删除' CONTRAINT'线路,只需要从以前的线路中移除COMMA:
grep -vE ",*CONSTRAINT*" ~/Test.sql > ~/Stripped.sql
sed -e 's/,*CONSTRAINT.*//' ~/Test.sql
如果有人知道如何用sed这样做,我会很感激一些指导。谢谢。
答案 0 :(得分:2)
我不会挂在多行部分上(假设你有几个类似的块,你并没有提供太多的样本数据):
echo ' KEY `vehicle_classification_id` (`vehicle_classification_id`),
CONSTRAINT `BodyStyle_VehicleClassification` FOREIGN KEY
(`vehicle_classification_id`) REFERENCES `vehicle_classifications` (`id`$
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;' | tr '\n' '\f' | sed -e 's/,\f *CONSTRAINT[^\f]*\f/\f/' | tr '\f' '\n'
KEY `vehicle_classification_id` (`vehicle_classification_id`)
(`vehicle_classification_id`) REFERENCES `vehicle_classifications` (`id`$
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
答案 1 :(得分:2)
sed 方法:
sed '/\s*KEY /{ N; s/,\s*CONSTRAINT .*//}' ~/Test.sql > ~/Stripped.sql