Использование sed выборочно - PullRequest
1 голос
/ 28 марта 2011

Мой дамп-файл выглядит примерно так ...

--
-- Current Database: `Batch`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `Batch` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;

USE `Batch`;

--
-- Table structure for table `BATCH_JOB_EXECUTION`
--

DROP TABLE IF EXISTS `BATCH_JOB_EXECUTION`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `BATCH_JOB_EXECUTION` (
  `JOB_EXECUTION_ID` bigint(20) NOT NULL,
  `VERSION` bigint(20) default NULL,

Я хочу изменить имя БД, найденное в таблице создания и операторе "use", на pd_Batch.

sed 's/Batch/pd_Batch/' test.sql

Вышеприведенное утверждение сделает все необходимое. Но я не хочу, чтобы какое-либо слово «Пакет» было изменено. Это должно изменить только слово, найденное в строке начиная с CREATE DATABASE или USE.

Обновление:

Побочным продуктом этого вопроса является наличие более одной БД в файле test.sql. Поэтому следующие слова должны начинаться с префикса pd_

Batch
cash
country
rules
currency
state

1 Ответ

1 голос
/ 28 марта 2011
sed '/CREATE DATABASE\|USE/s/Batch/pd_Batch/' test.sql
...