我的转储文件看起来像这样......
--
-- 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,
我想将create table中的DB名称和“use”语句更改为pd_Batch。
sed 's/Batch/pd_Batch/' test.sql
以上陈述将有必要。但我不希望任何“批处理”字改变。它应该只改变在线上找到的单词 从CREATE DATABASE或USE开始。
更新
这个问题的副产品是test.sql文件中有多个DB。因此,以下单词需要以pd _
为前缀Batch
cash
country
rules
currency
state
答案 0 :(得分:1)
sed '/CREATE DATABASE\|USE/s/Batch/pd_Batch/' test.sql