选择性地使用sed
我的转储文件看起来像这样选择性地使用sed,sed,awk,grep,Sed,Awk,Grep,我的转储文件看起来像这样 -- -- 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 `
--
-- 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表和“use”语句中的DB名称更改为pd_Batch
sed 's/Batch/pd_Batch/' test.sql
上述声明将起到必要的作用。但我不想改变任何“批量”字。它应该只更改行中找到的单词
从创建数据库或使用开始
更新:
这个问题的副产品是test.sql文件中有多个DB。所以下面的单词需要加上前缀pd_
Batch
cash
country
rules
currency
state
谢谢是否可以在一个sed中更改多个DB名称?@shan:是的,类似于
sed'/CREATE DATABASE\| USE/{s/Batch/pd_Batch/;s/Foo/pd_Foo/;s/Bar/pd_Bar/}之类的内容
谢谢。可以在一个sed中更改多个DB名称吗?@shan:是的,类似于sed'/CREATE DATABASE\| USE/{s/Batch/pd_Batch/;s/Foo/pd_Foo/;s/Bar/pd_Bar/}
sed '/CREATE DATABASE\|USE/s/Batch/pd_Batch/' test.sql