有选择地使用sed

时间:2011-03-28 06:39:32

标签: 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 `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

1 个答案:

答案 0 :(得分:1)

sed '/CREATE DATABASE\|USE/s/Batch/pd_Batch/' test.sql