A есть файл, содержащий команды миграции SQL. НапримерИспользование awk или sed добавляет строку на основе соответствия шаблону
// admin_setting
$this->createTable('{{%admin_setting}}', [
'setting_id' => Schema::TYPE_INTEGER . "(11) NOT NULL AUTO_INCREMENT",
'short_description' => Schema::TYPE_STRING . "(255) NOT NULL",
'value' => Schema::TYPE_TEXT . " NULL",
'PRIMARY KEY (setting_id)',
], $this->tableOptions);
// authorization
$this->createTable('{{%authorization}}', [
'authorization_id' => Schema::TYPE_INTEGER . "(11) NOT NULL AUTO_INCREMENT",
'short_description' => Schema::TYPE_STRING . "(255) NULL",
'PRIMARY KEY (authorization_id)',
], $this->tableOptions);
Я хочу добавить еще одну команду перед строкой, содержащей команду «CreateTable(), так что мой пример файла будет выглядеть следующим образом: -
// admin_setting
$this->dropTable('{{%admin_setting}}');
$this->createTable('{{%admin_setting}}', [
'setting_id' => Schema::TYPE_INTEGER . "(11) NOT NULL AUTO_INCREMENT",
'short_description' => Schema::TYPE_STRING . "(255) NOT NULL",
'value' => Schema::TYPE_TEXT . " NULL",
'PRIMARY KEY (setting_id)',
], $this->tableOptions);
// authorization
$this->dropTable('{{%authorization}}');
$this->createTable('{{%authorization}}', [
'authorization_id' => Schema::TYPE_INTEGER . "(11) NOT NULL AUTO_INCREMENT",
'short_description' => Schema::TYPE_STRING . "(255) NULL",
'PRIMARY KEY (authorization_id)',
], $this->tableOptions);
Я вижу много примеров удалить строки, соответствующие шаблону, но никто до сих пор, что не может заставить меня вышеуказанные изменения.
ближайший я пришел в
awk '/createTable/{print "$this->DropTable();"}1' file
, но я не могу заполнить содержимое внутри скобок.
Прекрасно подходит для меня. Не могли бы вы потратить время на объяснение параметров h; G. – crafter
@crafter команда 'h' копирует текущую строку в регистр, известный как пространство удержания (HS). Команда 'G' добавляет содержимое HS в пространство шаблонов (PS), которое является регистром, удерживающим текущую строку. См. [Здесь] (http://www.gnu.org/software/sed/manual/sed.html#Other-Commands). – potong